Why is it impossible to call static methods on Nullable<T> shorthands? : <p>I thought <code>T?</code> is just a compiler shorthand for <code>Nullable&lt;T&gt;</code>. According to <a href="https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/nullable-types/" rel="noreferrer">MSDN</a>:</p>

<blockquote>
  <p>The syntax <code>T?</code> is shorthand for <code>Nullable&lt;T&gt;</code>, where <code>T</code> is a value type.
  The two forms are interchangeable.</p>
</blockquote>

<p>However, there is a little (insignificant) difference: Visual Studio doesn't allow me to call static methods on shorthands:</p>

<pre><code>bool b1 = Nullable&lt;int&gt;.Equals(1, 2); //no error
bool b2 = int?.Equals(1, 2); //syntax error "Invalid expression term 'int'"
</code></pre>

<p>Why? Is there any reason for this limitation?</p>
