propiedad net has float c# integer nullable

net - propiedad nullable c#



¿Cuál es el valor predeterminado del tipo anulable "int?"(Incluido el signo de interrogación)? (3)

El valor predeterminado para int? - y para cualquier tipo anulable que use el "tipo?" declaración - es null .

Por qué este es el caso:

  • int? es azúcar sintáctico para el tipo Nullable<T> (donde T es int ), una estructura. ( here )
  • El tipo Nullable<T> tiene un miembro bool HasValue , que cuando es false , hace que la Nullable<T> "actúe como" un valor null . En particular, el método Nullable <T> .Equals se anula para devolver true cuando se Nullable<T> un Nullable<T> con HasValue == false con un valor null real.
  • A partir de la Especificación del lenguaje C # 11.3.4 , el valor predeterminado inicial de una instancia de estructura es que todos los campos de tipo de valor de esa estructura se establecen en su valor predeterminado, y todos los campos de tipo de referencia de esa estructura se configuran como null .
  • El valor predeterminado de una variable bool en C # es false ( reference ). Por lo tanto, la propiedad HasValue de una Nullable<T> predeterminada es false ; lo que a su vez hace que la Nullable<T> sí misma actúe como null .

En C #, ¿cuál es el valor predeterminado de una variable de instancia de clase de tipo int? ?

Por ejemplo, en el siguiente código, ¿qué valor tendrá MyNullableInt si nunca se asigna explícitamente?

class MyClass { public int? MyNullableInt; }

(Parece probable que la respuesta sea casi null o 0 , pero ¿cuál es?)


Me pareció importante compartir el Nullable<T>.GetValueOrDefault() , que es particularmente útil cuando se trabaja con cálculos matemáticos que usan Nullable<int> aka int? valores. Hay muchas ocasiones en las que no tiene que verificar la propiedad HasValue y simplemente puede usar GetValueOrDefault() lugar.

var defaultValueOfNullableInt = default(int?); Console.WriteLine("defaultValueOfNullableInt == {0}", (defaultValueOfNullableInt == null) ? "null" : defaultValueOfNullableInt.ToString()); var defaultValueOfInt = default(int); Console.WriteLine("defaultValueOfInt == {0}", defaultValueOfInt); Console.WriteLine("defaultValueOfNullableInt.GetValueOrDefault == {0}", defaultValueOfNullableInt.GetValueOrDefault());


var x = default (int?); Console.WriteLine("x == {0}", (x == null) ? "null" : x.ToString());