Я столкнулся с этим сегодня и понятия не имею, почему компилятор С# не выдает ошибку.
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?");
}
}
}