Рассмотрим следующий код:
int? x = null;
Console.Write ("Hashcode: ");
Console.WriteLine(x.GetHashCode());
Console.Write("Type: ");
Console.WriteLine(x.GetType());
При выполнении он пишет, что Hashcode равен 0, но с ошибкой NullReferenceException в попытке определить тип x. Я знаю, что методы, называемые нулевыми типами, на самом деле вызываются базовыми значениями, поэтому я ожидал, что программа будет терпеть неудачу во время x.GetHashCode().
Итак, какова принципиальная разница между этими двумя методами и почему первая из них не сработает?