Ich habe einen C # -Code mit der folgenden Array-Deklaration. Beachten Sie die einzelne ?
nach Color
.
Bei meinen Nachforschungen habe ich festgestellt, dass wenn Sie einen Code wie:
haben %Vor% Die Variable a
ist nicht initialisiert. Wann und wo würdest du das verwenden?
?
ist nur syntaktischer Zucker, dh das Feld ist Nullable. Es ist eigentlich kurz für Nullable<T>
.
In C # und Visual Basic markieren Sie einen Werttyp als Nullable, indem Sie die Option verwenden ? Notation nach dem Werttyp. Zum Beispiel, int? in C # oder Integer? deklariert in Visual Basic einen ganzzahligen Werttyp, der zugewiesen werden kann null.
Sie können null
keinen Werttypen zuweisen, int
ist ein Werttyp, der null
Wert nicht enthalten kann, int?
kann dagegen einen Nullwert speichern.
Dasselbe gilt für Color
, da es sich um eine Struktur (also Werttyp) handelt, die keine Nullwerte enthalten kann. Mit Color?[,]
erstellen Sie ein Array mit nullfähigen Farben .
Für Ihre Frage:
Die Variable 'a' ist nicht initialisiert. Wann und wo würdest du verwenden? das?
Wenn ?
nicht mit null
oder einem anderen Wert initialisiert wird, muss es initialisiert werden.
Dies bedeutet, dass der definierte Typ nullfähig ist. Weitere Informationen finden Sie hier .
Mit Nullwerten können Sie tun:
%Vor%Und natürlich Null-Checks:
%Vor% Color?
bezieht sich auf eine Nullable
Color
und entspricht Nullable<Color>
.
Die Syntax T? ist eine Abkürzung für System.Nullable, wobei T ein Werttyp ist. Die zwei Formen sind austauschbar.
Dies bedeutet, dass das Objekt einen null
-Wert zusätzlich zu seinem normalen Bereich haben kann.
Von MSDN :
Nullable-Typen sind Instanzen der Nullable-Struktur. Ein nullwertfähiger Typ kann den korrekten Wertebereich für den zugrunde liegenden Werttyp sowie einen zusätzlichen Nullwert darstellen. Beispielsweise kann eine Nullable, ausgesprochen "Nullable of Int32", einen beliebigen Wert von -2147483648 bis 2147483647 zugewiesen werden, oder sie kann den Nullwert zugewiesen werden.
...
Beispiel
%Vor%