preguntando si hay de todos modos para representar el siguiente código en C# 3.5:¿Es posible en C# sobrecargar un operador genérico de colada de la siguiente manera?
public struct Foo<T> {
public Foo(T item) {
this.Item = item;
}
public T Item { get; set; }
public static explicit operator Foo<U> (Foo<T> a)
where U : T {
return new Foo<U>((U)a.Item)
}
}
Gracias
E incluso si admitimos conversiones genéricas definidas por el usuario, esta seguiría siendo ilegal. Es ilegal definir una conversión que reemplace una conversión incorporada. Esto sería así si T y U fueran del mismo tipo; estarías reemplazando la conversión de identidad. –
Como los moldes son decididos por el compilador, si T y U son del mismo tipo, entonces no usarían el molde definido por el usuario, y serían legales. –