Quando declaro um int
como nulo
int? i=null;
Será que i
aqui se tornar um tipo de referência?
Quando declaro um int
como nulo
int? i=null;
Será que i
aqui se tornar um tipo de referência?
Respostas:
Não, um anulável é uma estrutura. O que está acontecendo é que a estrutura anulável tem dois valores:
int
para int?
, DateTime
para DateTime?
etc.).HasValue
é a propriedade.)Quando você define o valor do tipo de dados, a estrutura muda HasValue
para true.
Dos tipos anuláveis (Guia de Programação em C #) :
Tipos anuláveis são instâncias da estrutura System.Nullable.
e
Tipos anuláveis representam variáveis do tipo valor que podem receber o valor nulo. Você não pode criar um tipo anulável com base em um tipo de referência. (Os tipos de referência já suportam o valor nulo.)
Portanto, não, eles não são tipos de referência.
Tipos anuláveis não são tipos de valor nem tipos de referência. Eles são mais parecidos com os tipos de valor, mas têm algumas propriedades dos tipos de referência.
Naturalmente, tipos anuláveis podem ser definidos como null
. Além disso, um tipo anulável não pode satisfazer uma struct
restrição genérica . Além disso, quando você caixa um tipo anulável com HasValue
igual a false
, você recebe um null
ponteiro em vez de um tipo anulável em caixa (uma situação semelhante existe com unboxing).
Essas propriedades tornam os tipos anuláveis sem valor, mas com certeza também não são tipos de referência. Eles são seus próprios tipos especiais de valor nulo.
Não, o tipo Nullable é de fato uma estrutura. O tempo de execução manipulará inteligentemente a configuração de um valor nulo para você, dando a aparência de um tipo de referência, quando não for ....
Tipos anuláveis não podem ser tipos de referência.