Wenn ich ein int
als nullbar deklariere
int? i=null;
Wird i
hier ein Referenztyp?
Nein, eine Nullable ist eine Struktur. Was passiert ist, dass die nullbare Struktur zwei Werte hat:
int
für int?
, DateTime
für DateTime?
usw.).HasValue
ist das Eigentum.)Wenn Sie den Wert des Datentyps festlegen, ändert sich die Struktur HasValue
in true.
Aus nullbaren Typen (C # -Programmierhandbuch) :
Nullable-Typen sind Instanzen der System.Nullable-Struktur.
und
Nullable-Typen stellen Werttypvariablen dar, denen der Wert null zugewiesen werden kann. Sie können keinen nullbaren Typ basierend auf einem Referenztyp erstellen. (Referenztypen unterstützen bereits den Nullwert.)
Nein, sie sind keine Referenztypen.
Nullable-Typen sind weder Werttypen noch Referenztypen. Sie ähneln eher Werttypen, haben jedoch einige Eigenschaften von Referenztypen.
Natürlich können nullbare Typen auf gesetzt werden null
. Darüber hinaus kann ein nullfähiger Typ eine generische struct
Einschränkung nicht erfüllen . Wenn Sie einen nullbaren Typ mit HasValue
gleich boxen false
, erhalten Sie einen null
Zeiger anstelle eines nullbaren Typs (eine ähnliche Situation besteht beim Unboxing).
Diese Eigenschaften machen nullfähige Typen zu nicht wertvollen Typen, aber sie sind sicher auch keine Referenztypen. Sie sind ihre eigenen speziellen Nullwerttypen.
Nein, der Nullable-Typ ist tatsächlich eine Struktur. Die Laufzeit übernimmt auf intelligente Weise die Einstellung eines Nullwerts für Sie und gibt das Erscheinungsbild eines Referenztyps an, wenn dies nicht der Fall ist.
Nullable-Typen können keine Referenztypen sein.
http://msdn.microsoft.com/en-us/library/2cf62fcy.aspx
quelle
Sie sollten einen Referenztyp nicht zu einem nullbaren Typ machen müssen, da Sie an seiner Stelle null übergeben können.
quelle