Você está incrementando nulo ???
int? a = null;
a++;
Esta declaração significa simplesmente, null++
ou seja, nulo + 1.
De acordo com este documento, um tipo anulável pode representar o intervalo correto de valores para seu tipo de valor subjacente, mais um valor nulo adicional. Um anulável, pronunciado "Anulável de Int32," pode receber qualquer valor de -2147483648 a 2147483647, ou pode ser atribuído o valor nulo
Aqui você está incrementando nulo, então também se tornará o valor nulo, não 0 ou qualquer outro inteiro.
Por que ele imprime em branco em vez de erro ??
quando você imprime um tipo anulável com valor nulo, ele imprime em branco em vez de erro porque você está imprimindo uma variável, ou seja, o valor de um local da memória. que pode ser nulo ou qualquer inteiro.
Mas quando você tenta imprimir null usando Console.WriteLine(null)
, as null não é uma variável, então não se refere a nenhum local da memória. E, portanto, dá erro "NullReferenceException"
.
Então, como você pode imprimir qualquer inteiro usando Console.WriteLine(2);
??
Nesse caso, 2 ficará na memória em um local temporário e o ponteiro aponta para esse local de memória para imprimir.
++
,+=
e+
ter levantado variantes. Portanto, as instruçõesa++;
,a += 1;
ea = a + 1;
são permitidas. Cada produtonull
(sem exceção lançada)a
é inicialmentenull
.