Почему я не могу написать Nullable >?

Определение Nullable :

[SerializableAttribute]
public struct Nullable where T : struct, new()

Ограничение , где T: struct подразумевает, что T может быть только тип значения. Итак, я очень хорошо понимаю, что не могу писать:

Nullable a; //error. makes sense to me

Потому что строка является ссылочным типом, а не типом значения. Но я не очень понимаю, почему я не могу написать

Nullable> b; //error. but why?

Почему нельзя? В конце концов, Nullable является типом значения, и, следовательно, он может быть аргументом типа для Nullablle .

Когда я скомпилировал его на ideone, он выдает следующую ошибку ( ideone ):

error CS0453: Тип int? должен быть типом значения, не допускающим значения NULL, чтобы использовать его в качестве параметра типа 'T' в универсальном типе или методе 'System.Nullable' Ошибка компиляции: 1 ошибка (и), 0 предупреждений

11
задан BoltClock 29 September 2011 в 12:28
поделиться