¿Los tipos de referencia son tipos anulables?

Cuando declaro un int como anulable

 int? i=null; 

¿ i convierto aquí en un tipo de referencia?

No, un nulo es una estructura. Lo que está sucediendo es que la estructura anulable tiene dos valores:

  1. El valor del tipo de datos ( int para int? DateTime para DateTime? Etc.).
  2. Un valor booleano que indica si el valor del tipo de datos se ha establecido. ( HasValue es la propiedad).

Cuando establece el valor del tipo de datos, la estructura cambia HasValue a verdadero.

Qué es un nullable

De tipos anulables (Guía de progtwigción C #) :

Los tipos anulables son instancias de la estructura System.Nullable.

y

Los tipos anulables representan variables de tipo valor a las que se puede asignar el valor de 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 ni tipos de valores ni tipos de referencia. Son más como tipos de valor, pero tienen algunas propiedades de tipos de referencia.

Naturalmente, los tipos que aceptan null pueden ser null . Además, un tipo anulable no puede satisfacer una restricción de struct genérica. Además, cuando HasValue un tipo anulable con HasValue igual a false , obtiene un puntero null lugar de un tipo anulado en caja (una situación similar existe con unboxing).

Estas propiedades hacen que los tipos nulables sean tipos que no sean de valor, pero tampoco son tipos de referencia. Son su propio tipo especial de valor anulable.

No, el tipo Nullable es, de hecho, una estructura. El tiempo de ejecución manejará inteligentemente la configuración de un valor nulo para usted, dando la apariencia de un tipo de referencia, cuando no lo es …

Los tipos anulables no pueden ser tipos de referencia.

http://msdn.microsoft.com/en-us/library/2cf62fcy.aspx

No debería necesitar hacer que un tipo de referencia sea un tipo anulable ya que puede pasar el nulo en su lugar.