Я думал, что T?
является просто сокращением для Nullable<T>
компилятора. Согласно MSDN:
Синтаксис
T?
является сокращением дляNullable<T>
, гдеT
- тип значения. Эти две формы взаимозаменяемы.
Тем не менее, существует небольшая (незначительная) разница: Visual Studio не позволяет мне называть статические методы по сокращению:
bool b1 = Nullable<int>.Equals(1, 2); //no error
bool b2 = int?.Equals(1, 2); //syntax error "Invalid expression term 'int'"
Почему? Есть ли причина для этого ограничения?