Por que não consigo escrever Nullable <Nullable <int>>?
A definição deNullable<T>
é
[SerializableAttribute]
public struct Nullable<T> where T : struct, new()
A restriçãowhere T : struct
implica queT
pode ser apenas um tipo de valor. Então eu entendo muito bem que não posso escrever:
Nullable<string> a; //error. makes sense to me
Porquestring
é um tipo de referência, não um tipo de valor. Mas eu realmente não entendo por que não consigo escrever
Nullable<Nullable<int>> b; //error. but why?
Por que não é permitido? Depois de tudo,Nullable<int>
é um tipo de valor e, portanto, pode ser um argumento do tipo paraNullablle<T>
.
Quando o compilamos em ideone, ocorre esse erro ideone):
error CS0453: O tipo 'int?' deve ser um tipo de valor não nulo para poder usá-lo como parâmetro de tipo 'T' no tipo ou método genérico 'System.Nullable' Falha na compilação: 1 erro (s), 0 avisos