Corri para isso hoje e não tenho ideia de por que o compilador C # não está gerando um erro.
Int32 x = 1;
if (x == null)
{
Console.WriteLine("What the?");
}
Estou confuso sobre como x poderia ser nulo. Especialmente porque esta atribuição definitivamente lança um erro do compilador:
Int32 x = null;
É possível que x possa se tornar nulo, a Microsoft simplesmente decidiu não colocar essa verificação no compilador ou ela foi perdida completamente?
Atualização: depois de mexer no código para escrever este artigo, de repente o compilador apareceu com um aviso de que a expressão nunca seria verdadeira. Agora estou realmente perdido. Coloquei o objeto em uma classe e agora o aviso foi embora, mas deixei a questão, um tipo de valor pode acabar sendo nulo.
public class Test
{
public DateTime ADate = DateTime.Now;
public Test ()
{
Test test = new Test();
if (test.ADate == null)
{
Console.WriteLine("What the?");
}
}
}
if (1 == 2)
. Não é função do compilador realizar a análise do caminho do código; é para isso que servem as ferramentas de análise estática e os testes de unidade.