valores - Verificar que un valor entero sea nulo en c#
tipo de dato null (6)
Como int es un ValueType, puede usar el siguiente código:
if(Age == default(int) || Age == null)
Tengo un valor entero y necesito verificar si es NULO o no. Lo obtuve usando un operador nulo-coalescente
DO#:
public int? Age;
if ((Age ?? 0)==0)
{
// do somethig
}
Ahora tengo que verificar en una aplicación anterior donde la parte de declaración no está en ternario. Entonces, cómo lograr esto sin el operador de fusión nula.
Como se indicó anteriormente, ??
es el operador nulo coalescente. Entonces el equivalente a
(Age ?? 0) == 0
sin usar el ??
operador es
(!Age.HasValue) || Age == 0
Sin embargo, no hay una versión de .Net que tenga Nullable <T> pero no ??
, entonces tu declaración,
Ahora tengo que verificar en una aplicación anterior donde la parte de declaración no está en ternario.
es doblemente inválido
Simplemente puedes hacer esto:
public void CheckNull(int? item)
{
if (item != null)
{
//Do Something
}
}
Varias cosas:
Age
no es un número entero; es un tipo entero numerable . Ellos no son los mismos. Consulte la documentación de Nullable<T>
en MSDN para obtener más información.
??
es el operador de fusión nulo , no el operador ternario (en realidad llamado el operador condicional ).
Para verificar si un tipo que HasValue
null
tiene un valor, usa HasValue
o comprueba directamente contra null
:
if(Age.HasValue)
{
// Yay, it does!
}
if(Age == null)
{
// It is null :(
}
Ya hay una respuesta correcta de Adam, pero tiene otra opción para refactorizar su código:
if (Age.GetValueOrDefault() == 0)
{
// it''s null or 0
}
Nullable<T>
( ?
o ?
) Expone un indicador HasValue
para denotar si se establece un valor o si el elemento es nulo.
Además, los tipos anulables admiten ==
:
if (Age == null)
El ??
es el operador coalescente nulo y no da como resultado una expresión booleana, sino un valor devuelto:
int i = Age ?? 0;
Entonces para tu ejemplo:
if (age == null || age == 0)
O:
if (age.GetValueOrDefault(0) == 0)
O:
if ((age ?? 0) == 0)
O ternario:
int i = age.HasValue ? age.Value : 0;