Wie konvertiere ich eine nullable int
zu einer int
? Angenommen, ich habe 2 Arten von int wie unten:
int? v1;
int v2;
Ich möchte zuweisen v1
Wert auf v2
. v2 = v1;
wird einen Fehler verursachen. Wie kann ich konvertieren v1
a v2
?
Wie konvertiere ich eine nullable int
zu einer int
? Angenommen, ich habe 2 Arten von int wie unten:
int? v1;
int v2;
Ich möchte zuweisen v1
Wert auf v2
. v2 = v1;
wird einen Fehler verursachen. Wie kann ich konvertieren v1
a v2
?
Die bisherigen Antworten sind alle richtig; ich wollte nur noch eine weitere hinzufügen, die etwas sauberer ist:
v2 = v1 ?? default(int);
Jede Nullable<T>
ist implizit konvertierbar in seine T
, VORAUSGESETZT, dass der gesamte ausgewertete Ausdruck niemals zu einer Nullzuweisung an einen ValueType führen kann. Der Null-Koaleszenz-Operator ??
ist nur Syntaxzucker für den ternären Operator:
v2 = v1 == null ? default(int) : v1.Value;
...was wiederum Syntaxzucker für ein if/else ist:
if(v1==null)
v2 = default(int);
else
v2 = v1.Value;
Außerdem wird ab .NET 4.0, Nullable<T>
hat eine "GetValueOrDefault()"-Methode, die ein null-sicherer Getter ist, der im Grunde die oben gezeigte Null-Koaleszenz durchführt, also funktioniert auch das:
v2 = v1.GetValueOrDefault();
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
4 Stimmen
Was ist das gewünschte Verhalten, wenn
v1
esnull
?