visual valores valor validar utilice tipo tener que puede objeto net debe dato convertir comprobar acepte acepta c# .net code-review

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;