Nullable
не является универсальным классом, как вы указываете, Nullable<T>
является универсальным (у него есть параметр типа T
). Вот почему Nullable<T>
поступил только в C # 2.0: он появился с добавлением дженериков в CLR.
Вы можете сделать то же самое с обычным Nullable
, но вы не можете делать такие вещи:
int? myInt = 123;
int result = myInt.Value;
Вместо этого вы должны:
int result = (int)myInt.Value;
... и это может быть небезопасно, я имею в виду, что если myInt.Value
является string
? Общая версия Nullable<T>
допускает только int
в свойстве Value
.
Я не совсем понимаю, о чем вы спрашиваете ... "почему полезны универсальные классы"?