Cuando declaro un int
como anulable
int? i=null;
¿Se i
convierte aquí en un tipo de referencia?
No, un nulo es una estructura. Lo que sucede es que la estructura anulable tiene dos valores:
int
para int?
, DateTime
para DateTime?
, etc.).HasValue
es la propiedad)Cuando establece el valor del tipo de datos, la estructura cambia HasValue
a verdadero.
De tipos anulables (Guía de programación de C #) :
Los tipos anulables son instancias de la estructura System.Nullable.
y
Los tipos anulables representan variables de tipo de valor a las que se les puede asignar el valor nulo. No puede crear un tipo anulable basado en un tipo de referencia. (Los tipos de referencia ya admiten el valor nulo).
Entonces, no, no son tipos de referencia.
Los tipos anulables no son tipos de valor ni tipos de referencia. Se parecen más a los tipos de valor, pero tienen algunas propiedades de los tipos de referencia.
Naturalmente, los tipos anulables pueden establecerse en null
. Además, un tipo anulable no puede satisfacer una struct
restricción genérica . Además, cuando encajona un tipo anulable con HasValue
igual a false
, obtiene un null
puntero en lugar de un tipo anulable en caja (existe una situación similar con el desempaquetado).
Estas propiedades hacen que los tipos anulables no sean de valor, pero tampoco son tipos de referencia. Son su propio tipo especial de valores anulables.
No, el tipo Nullable es, de hecho, una estructura. El tiempo de ejecución gestionará de forma inteligente la configuración de un valor nulo para usted, dando la apariencia de un tipo de referencia, cuando no es ...
Los tipos anulables no pueden ser tipos de referencia.
http://msdn.microsoft.com/en-us/library/2cf62fcy.aspx
fuente
No debería necesitar convertir un tipo de referencia en un tipo anulable, ya que puede pasar nulo en su lugar.
fuente