When exactly do nullable types throw exceptions? : <p>Consider the following code:</p>

<pre><code>int? x = null;
Console.Write ("Hashcode: ");
Console.WriteLine(x.GetHashCode());
Console.Write("Type: ");
Console.WriteLine(x.GetType());
</code></pre>

<p>When executed, it writes that Hashcode is <code>0</code>, but fails with <code>NullReferenceException</code> in attempt to determine type of <code>x</code>.
I know that methods called on nullable types are actually called on underlying values, so I expected program to fail during <code>x.GetHashCode()</code>.</p>

<p>So, what is the fundamental difference between those two methods and why doesn't the first of them fail?</p>
