Quando dichiaro un int
nullable
int? i=null;
Fa i
qui diventato un tipo di riferimento?
Quando dichiaro un int
nullable
int? i=null;
Fa i
qui diventato un tipo di riferimento?
Risposte:
No, un nullable è uno struct. Ciò che sta accadendo è che la struttura nullable ha due valori:
int
per int?
, DateTime
per DateTime?
, ecc.).HasValue
è di proprietà.)Quando si imposta il valore del tipo di dati, la struttura cambia HasValue
in true.
Dai tipi nullable (Guida per programmatori C #) :
I tipi nullable sono istanze della struttura System.Nullable.
e
I tipi nullable rappresentano variabili di tipo valore a cui è possibile assegnare il valore null. Non è possibile creare un tipo nullable in base a un tipo di riferimento. (I tipi di riferimento supportano già il valore null.)
Quindi, no, non sono tipi di riferimento.
I tipi annullabili non sono né tipi di valore né tipi di riferimento. Sono più simili ai tipi di valore, ma hanno alcune proprietà dei tipi di riferimento.
Naturalmente, i tipi nullable possono essere impostati su null
. Inoltre, un tipo nullable non può soddisfare un struct
vincolo generico . Inoltre, quando si inscatola un tipo nullable con HasValue
uguale a false
, si ottiene un null
puntatore invece di un tipo nullable inscatolato (una situazione simile esiste con unboxing).
Queste proprietà rendono i tipi nullable tipi non valore, ma sicuramente non sono neanche tipi di riferimento. Sono il loro tipo speciale di valore nullable.
No, il tipo Nullable è in effetti una struttura. Il runtime gestirà in modo intelligente l'impostazione di un valore null per te, dando l'aspetto di un tipo di riferimento, quando non lo è ....
I tipi nullable non possono essere tipi di riferimento.