Quando declaro um intcomo nulo
int? i=null;
Será que iaqui se tornar um tipo de referência?
Quando declaro um intcomo nulo
int? i=null;
Será que iaqui 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:
intpara int?, DateTimepara DateTime?etc.).HasValueé a propriedade.)Quando você define o valor do tipo de dados, a estrutura muda HasValuepara 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 structrestrição genérica . Além disso, quando você caixa um tipo anulável com HasValueigual a false, você recebe um nullponteiro 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.