Cuando tenemos dos estructuras, y una es implícitamente convertible a la otra, entonces parece que las versiones System.Nullable<>
de las dos también son implícitamente convertibles. Al igual que si struct A
tiene una conversión implícita a struct B
, entonces A?
también se convierte en B?
."Covarianza" de System.Nullable <> struct
Aquí se muestra un ejemplo:
struct MyNumber
{
public readonly int Inner;
public MyNumber(int i)
{
Inner = i;
}
public static implicit operator int(MyNumber n)
{
return n.Inner;
}
}
Dentro de algún método:
MyNumber? nmn = new MyNumber(42);
int? covariantMagic = nmn; // works!
En el lenguaje C# Specification Version 4.0 leemos que una conversión como éste deberá existir para "la identidad implícita predefinida y conversiones numéricas ".
Pero es seguro asumir que también funcionará para las conversiones implícitas definidas por el usuario?
(Esta pregunta podría estar relacionado con este error: http://connect.microsoft.com/VisualStudio/feedback/details/642227/)
¿Incluso tiene tiempo para buscar estas cotizaciones o simplemente las escribe a mano? – Blindy
@Blindy: ¡Ambos! Tengo una copia impresa de la especificación en mi escritorio, y copié esta sección escribiendo ... ¡de ahí cualquier error tipográfico! –
Hmm, me perdí la sección 6.4.2 y solo había leído 6.1.4. Gracias. –