La definición de Nullable<T>
es:¿Por qué no puedo escribir Nullable <Nullable <int>>?
[SerializableAttribute]
public struct Nullable<T> where T : struct, new()
La restricción where T : struct
implica que T
sólo puede haber un tipo de valor. Así que muy bien entendido que no puedo escribir:
Nullable<string> a; //error. makes sense to me
Debido string
es un tipo de referencia, no es un tipo de valor. Pero realmente no entiendo por qué no puedo escribir
Nullable<Nullable<int>> b; //error. but why?
¿Por qué no está permitido? Después de todo, Nullable<int>
es un tipo de valor y, por lo tanto, puede ser un argumento de tipo Nullablle<T>
.
Cuando he recopilado en Ideone, se da este error (ideone):
CS0453 error: '? Int' El tipo debe ser un tipo de valor no anulable con el fin de utilizarlo como parámetro de tipo de 'T' en el tipo genérico o método 'System.Nullable' Compilación falló: 1 error (s), 0 advertencias
¿Cuál es el error? – asawyer
Lo siento, mi respuesta es incorrecta. La sentencia 'new Nullable();' compila (lo que da como resultado un 'int?' Con un valor de nulo), aunque el constructor predeterminado no está documentado. –
BoltClock
Y sí, la respuesta está en el error que debe obtener cuando intenta compilar su código. – BoltClock