2 Stimmen

VB.NET - Möchte zwei nullable Typen zusammenfügen - wie? (z.B. var1 + var2 wo beide nullable sind und vari1=Nothing, Var2=5 ergibt Nothing)

Ich habe:

Dim nVar1 As Long?

Dim nVar2 As Long?

Dim nVarSum As Long?

nVar1 = Nothing

nVar2 = 5

nVarSum = nVar1 + nVar2

Ich würde es vorziehen, wenn das Ergebnis nVarSum am Ende 5 wäre, anstatt Nothing.

Ich verstehe, wenn man etwas zu einem unbekannten Wert addiert, erhält man "etwas + unbekannt" oder x+5 ist immer gleich "x+5" und nicht "5", weil man immer noch das unbekannte "x" mit sich herumträgt.

Aber wie kann ich in diesem Fall eine Unbekannte oder Nichts als Null für die Zwecke der Addition behandeln?

Gracias.

(Im Grunde schickt uns der Endbenutzer eine Datendatei, der Code analysiert diese Datei und summiert dann etwa 15 Felder zusammen. Wenn der Benutzer diese Felder leer lässt, anstatt ihnen eine Null zuzuweisen, muss ich es so behandeln, als wäre es eine Null für diese eine Additionsoperation, aber der ganze Rest des Codes muss es weiterhin als Nichts-Wert sehen, da der Benutzer nicht WIRKLICH eine Null übermittelt hat... sie haben leer oder nichts übermittelt)

5voto

Marc Gravell Punkte 970173
nVar1.GetValueOrDefault()+ nVar2.GetValueOrDefault()

Oder in c#:

(nVar1??0)+(nVar2??0)

3voto

JaredPar Punkte 699699

Ich denke, die einfachste Möglichkeit ist, die If Betreiber zu erzwingen Nothing Werte in einen Standardwert.

nVarSum = If(nVar1,0) + If(nVar2,0)

Le site If Operator in der 2-Argument-Form bewirkt bei Anwendung auf nullbare Typen im Wesentlichen Folgendes. Wenn die nullable einen Wert hat, dann ist die Rückgabe der Wert, andernfalls ist es das zweite Argument.

0voto

Beth Punkte 9425

Oder testen Sie explizit auf nichts und setzen Sie Ihren Standardwert. Gleiches Ergebnis wie bei anderen Antworten.

If nVar1 is nothing then
   nVar1 = 0
end if

nVarSum = nVar1 + nVar2

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