Soy nuevo en C# y acabo de enterarme de que los objetos pueden ser nulos en C# pero int
no.¿Por qué int no puede ser nulo? ¿Cómo funciona nullable int (int?) En C#?
¿Cómo funciona nullable int (int?
) en C#?
Soy nuevo en C# y acabo de enterarme de que los objetos pueden ser nulos en C# pero int
no.¿Por qué int no puede ser nulo? ¿Cómo funciona nullable int (int?) En C#?
¿Cómo funciona nullable int (int?
) en C#?
int
es un tipo primitivo y solo ReferenceType
s (objetos) son anulables. Usted puede hacer una anulable int
envolviéndolo en un objeto:
System.Nullable<int> i;
-o-
int? i;
http://msdn.microsoft.com/en-us/library/2cf62fcy(v=vs.80).aspx
Los objetos son tipos de referencia y no pueden hacer referencia a nada ni a NULL; sin embargo, int es un tipo de valor que solo puede contener un valor y no puede hacer referencia a nada.
Los tipos de valores como int
contienen valores directos en lugar de referencias como ReferenceType
. Un valor no puede ser nulo, pero una referencia puede ser nula, lo que significa que no apunta a nada. Un valor no puede tener nada en él. Un valor siempre contiene alguna clase de valor
tipos anulables o anulables son tipos de valor especiales que además de los valores normales de los tipos de valor también apoyan valor nulo adicional al igual que los tipos de referencia
Un int es un tipo de valor. Es realmente de tipo Int32. Los objetos que pueden ser anulables son tipos de referencia. En un nivel básico, la diferencia es que un tipo de valor almacenará el valor con la variable donde un tipo de referencia almacenará una referencia al valor. Una referencia puede ser nula, lo que significa que no apunta a un valor. Donde un tipo de valor siempre tiene un valor.
Nullable ajusta un tipo de valor para permitirle tener la opción de ser nulo. Usando int? es solo un atajo de compilador para declarar un tipo que admite nulos.
El tipo int primitivo no puede expresar nulo en su representación binaria, pero Nullable<int>
agregó un byte extra para expresar la información nula de este valor.
Alguien da el voto negativo debe mostrar la razón. Nullable
No lo rechacé, pero puede haber sido debido a un hecho poco conocido sobre el diseño de la memoria sin ninguna documentación de respaldo. De lo contrario, no estoy seguro. – recursive
puede ordenar una int anulable mediante el uso de int? o Nullable<int>
, ambos son exactamente lo mismo.
Yo invertiría en un buen libro sobre C#. Seguramente tendrás muchas más preguntas sobre sintaxis básica como esta y pedirles individualmente sobre SO tomaría mucho tiempo. –
http://stackoverflow.com/questions/6191339/why-type-int-is-never-equal-to-null – Bart
@Bart: Veo que se cerró como una trampa del único jleedev vinculado, pero esta pregunta es mucho más específico para C# con tipos de valores que se pueden nullar ... – BoltClock