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