En C# 3.0, ¿puede asignar null a int? Tipo (? en int CLR es un struct):Tipo de valor de C# inicializado con nulo
int? a = null;
pero cuando se define una estructura personalizada:
struct MyStruct
{
}
hay un error durante la compilación de este código:
MyStruct a = null;
El error es el siguiente:
Cannot convert null to 'Example.MyStruct' because it is a non-nullable value type
Mientras int? es una estructura en CLR, de alguna manera es contradictorio que podamos asignarle nulo. Supongo que null está implícitamente casted o en caja a un certian int? valor que representa el valor nulo. ¿Cómo se hace exactamente? ¿Cómo puedo extender MyStruct de tal manera que sería posible ejecutar la línea:
MyStruct a = null;
Tiempos interesantes de esta pregunta. Acabo de terminar de leer el capítulo sobre tipos anulables en el libro de Jon (C# en profundidad). ¡Cada desarrollador de C# debería leerlo! Gracias Jon. – Bryan
Simplemente me gustaría señalar que no pagué ese comentario :) –
Su afirmación "Tenga en cuenta que esto es realmente una característica de idioma" es algo confuso ya que CLR * lo hace * (como usted menciona más adelante) manejarlo 'Nullable <>' estructura especialmente en las operaciones de boxeo y desembalaje, lo que en mi humilde opinión hace de esto una característica de tiempo de ejecución (con algo de azúcar sintáctico '?' Para colmo). – Lucero