C# LanguageTipos anulables


Sintaxis

  • Nullable<int> i = 10;
  • ¿En t? j = 11;
  • ¿En t? k = nulo;
  • ¿Fecha y hora? DateOfBirth = DateTime.Now;
  • ¿decimal? Cantidad = 1.0m;
  • bool IsAvailable = true;
  • ¿carbonizarse? Letra = 'a';
  • (tipo)? nombre de la variable

Observaciones

Los tipos anulables pueden representar todos los valores de un tipo subyacente, así como null .

La sintaxis T? es taquigrafía para Nullable<T>

Los valores anulables son objetos System.ValueType realidad, por lo que se pueden encuadrar y desempaquetar. Además, el valor null de un objeto anulable no es lo mismo que el valor null de un objeto de referencia, es solo un indicador.

Cuando se utiliza un cuadro de objetos anulables, el valor nulo se convierte en referencia null y el valor no nulo se convierte en un tipo subyacente no anulable.

DateTime? dt = null;
var o = (object)dt;
var result = (o == null); // is true

DateTime? dt = new DateTime(2015, 12, 11);
var o = (object)dt;
var dt2 = (DateTime)dt; // correct cause o contains DateTime value

La segunda regla conduce al código correcto, pero paradójico:

DateTime? dt = new DateTime(2015, 12, 11);
var o = (object)dt;
var type = o.GetType(); // is DateTime, not Nullable<DateTime>

En forma corta:

DateTime? dt = new DateTime(2015, 12, 11);
var type = dt.GetType(); // is DateTime, not Nullable<DateTime>

Tipos anulables Ejemplos relacionados