593 Stimmen

Wie konvertiert man C# nullable int in int

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 ?

4 Stimmen

Was ist das gewünschte Verhalten, wenn v1 es null ?

782voto

KeithS Punkte 67713

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();

213voto

Zum Beispiel so,

if(v1.HasValue)
   v2=v1.Value

127voto

e36M3 Punkte 5794

Sie können die Eigenschaft Value für die Zuweisung verwenden.

v2 = v1.Value;

97voto

thestar Punkte 4565

Alles, was Sie brauchen, ist

v2= v1.GetValueOrDefault();

59voto

Arturo Martinez Punkte 3584

Sie können es nicht tun, wenn v1 null ist, aber Sie können mit einem Operator überprüfen.

v2 = v1 ?? 0;

CodeJaeger.com

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.

Powered by:

X