Определение 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 предупреждений