¿Estás incrementando nulo ???
int? a = null;
a++;
Esta declaración simplemente significa, null++
es decir, nulo + 1.
Según este documento, un tipo que acepta valores NULL puede representar el rango correcto de valores para su tipo de valor subyacente, más un valor nulo adicional. A un valor Nullable, pronunciado "Nullable of Int32", se le puede asignar cualquier valor de -2147483648 a 2147483647, o se le puede asignar el valor nulo
Aquí está incrementando el valor nulo, luego también se convertirá en un valor nulo, no 0 o cualquier otro número entero.
¿Por qué se imprime en blanco en lugar de error?
cuando imprime un tipo que acepta valores NULL con valor nulo, se imprime en blanco en lugar de error porque está imprimiendo una variable, es decir, el valor de una ubicación de memoria. que puede ser nulo o cualquier entero.
Pero cuando intenta imprimir nulo usando Console.WriteLine(null)
, como nulo no es una variable, no se refiere a ninguna ubicación de memoria. Y por eso da error "NullReferenceException"
.
Entonces, ¿cómo puedes imprimir cualquier número entero usando Console.WriteLine(2);
?
En este caso, 2 se almacenará en la memoria en una ubicación temporal y el puntero apunta a esa ubicación de la memoria para imprimir.
++
,+=
y+
han levantado variantes. Por lo tanto, las declaracionesa++;
,a += 1;
ya = a + 1;
están todas permitidas. Cada productonull
(sin excepción) sia
es inicialmentenull
.