Typischerweise wird das Fragezeichen hauptsächlich für die Bedingung verwendet x ? "yes" : "no"
.
Aber ich habe eine andere Verwendung dafür gesehen, kann aber ?
zum Beispiel keine Erklärung für diese Verwendung des Operators finden.
public int? myProperty
{
get;
set;
}
int
Typ und eine entsprechendeInteger
Klasse gibt.Es ist eine Abkürzung für
Nullable<int>
.Nullable<T>
wird verwendet, um das Setzen eines Werttyps zu ermöglichennull
. Werttypen können normalerweise nicht null sein .quelle
value types
kann nicht null sein. Wenn Sie ein int oder ein bool (die Werttypen sind) deklarieren, ohne einen bestimmten Wert zuzuweisen, haben sie weiterhin Werte (0 bzw. false), d. H. Sie wären nicht null. Nicht zugewiesenreference types
, wie z. B. Objekt oder MyClass, ist dagegen null. Vielleicht möchten Sie sich über den Unterschied zwischen Werttypen und Referenztypen informieren.Im
das ? erklärt einen if- Satz. Hier: x repräsentiert die boolesche Bedingung; Der Teil vor dem : ist der Dann- Satz und der Teil danach ist der Sonst- Satz.
In zum Beispiel
das ? deklariert einen nullbaren Typ und bedeutet, dass der Typ davor einen Nullwert haben kann.
quelle
return value ? value : "isNull";
sagt mir, dassstring value
nicht in bool konvertierbar ist.quelle
es erklärt, dass der Typ nullbar ist.
quelle
praktische Anwendung:
quelle
Um die obigen Antworten zu ergänzen, finden Sie hier ein Codebeispiel
Dies würde einen Kompilierungsfehler ergeben:
Beachten Sie, dass für NullableTest kein Kompilierungsfehler vorliegt. (Beachten Sie das? in der Erklärung von t2)
quelle
int?
ist eine Abkürzung fürNullable<int>
. Die beiden Formen sind austauschbar.Nullable<T>
ist ein Operator, den Sie mit einem Werttyp verwenden könnenT
, um ihn zu akzeptierennull
.Falls Sie noch nicht wissen: Werttypen sind Typen , die Werte als akzeptiert
int
,bool
,char
etc ...Sie können keine Verweise auf Werte akzeptieren: Sie würden einen Fehler bei der Kompilierung erzeugen, wenn Sie ihnen a zuweisen
null
, im Gegensatz zu Referenztypen , die dies offensichtlich akzeptieren können.Warum brauchst du das? Denn manchmal können Ihre Werttypvariablen Nullreferenzen erhalten, die von etwas zurückgegeben werden, das nicht sehr gut funktioniert, wie z. B. einer fehlenden oder undefinierten Variablen, die von einer Datenbank zurückgegeben wird.
Ich empfehle Ihnen, die Microsoft-Dokumentation zu lesen, da sie das Thema recht gut abdeckt.
quelle