![]() |
От: | _nn_ | www.nemerleweb.com |
Дата: | 08.03.11 14:29 | ||
Оценка: |
__>>class A[T]
__>>{
__>> public static @:[From](x : A[From]) : A[T]
__>> {
__>> A()
__>> }
__>>}
C>А вы этот код запускали? Мне помнится, когда я экспериментировал, такой каст вылетал с Exception-ом.
Конкретно этот код компилируется и работает.
Вот получше пример
[nemerle]
using System.Console;
class A[T]
{
public static @:[From](x : A[From]) : A[T]
{
A()
}
}
class Base{}
class Derived{}
def a = A.[Derived]();
def b : A[Base] = a;
WriteLine($"$a $b");
A`1[Derived] A`1[Base]
internal class A<T>
{
public static implicit operator A<T><From>(A<From> x)
{
return new A<T>();
}
}
public class a
{
public static void Main()
{
A<Derived> a = new A<Derived>();
A<Base> a2 = (A<Base>) a;
Console.WriteLine(Convert.ToString(a) + " " + Convert.ToString(a2));
}
}