I thought T? is just a compiler shorthand for Nullable<T>. According to MSDN:
The syntax
T?is shorthand forNullable<T>, whereTis a value type. The two forms are interchangeable.
However, there is a little (insignificant) difference: Visual Studio doesn't allow me to call static methods on shorthands:
bool b1 = Nullable<int>.Equals(1, 2); //no error
bool b2 = int?.Equals(1, 2); //syntax error "Invalid expression term 'int'"
Why? Is there any reason for this limitation?