C # хорошо со сравнением типов значений к нулю
Я столкнулся с этим сегодня и понятия не имею, почему компилятор C # не выдает ошибку.
Int32 x = 1;
if (x == null)
{
Console.WriteLine("What the?");
}
Я запутался в том, что x может быть нулевым. Тем более что это присваивание определенно вызывает ошибку компилятора:
Int32 x = null;
Возможно ли, что x может стать нулевым, Microsoft просто решила не помещать эту проверку в компилятор, или она была полностью пропущена?
Обновление: после работы с кодом для написания этой статьи неожиданно для компилятора появилось предупреждение о том, что выражение никогда не будет истинным. Теперь я действительно потерян. Я поместил объект в класс, и теперь предупреждение исчезло, но осталось с вопросом, может ли тип значения оказаться нулевым.
public class Test
{
public DateTime ADate = DateTime.Now;
public Test ()
{
Test test = new Test();
if (test.ADate == null)
{
Console.WriteLine("What the?");
}
}
}