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?");
        }
    }
}

Ответы на вопрос(10)

Ваш ответ на вопрос