int? i = 10;
double? d1 = 3.14;
bool? flag = null;
char? letter = ‘a’;
int?[] arr = new int?[10];
Cada instancia de un tipo que acepta valores NULL tiene dos propiedades públicas de sólo lectura:
- HasValue
HasValue es de tipo bool. Se establece como true cuando la variable contiene un valor que no es null.
- Value
Value es del mismo tipo que el tipo subyacente. Si HasValue es true, Value contiene un valor significativo. Si HasValue es false, al tener acceso a Value se producirá una excepciónInvalidOperationException.
Al realizar comparaciones con tipos que aceptan valores null, si alguno de estos tipos es null, la comparación siempre se evalúa como false. Por consiguiente, es importante no dar por supuesto que, porque una comparación sea false, el caso contrario será true.
Una comparación de dos tipos que aceptan valores null y ambos son null se evaluará como true.
Ref(Guia de Programacion de C#)