In SQL Server können Sie mit der IsNull()
Funktion überprüfen, ob ein Wert null ist, und wenn dies der Fall ist, einen anderen Wert zurückgeben. Jetzt frage ich mich, ob es in C # etwas Ähnliches gibt.
Zum Beispiel möchte ich etwas tun wie:
myNewValue = IsNull(myValue, new MyValue());
anstatt:
if (myValue == null)
myValue = new MyValue();
myNewValue = myValue;
Vielen Dank.
c#
.net
sql-server
isnull
Hades
quelle
quelle
this.BinaryExists = vModel.BinaryExists ?? 0;
zuthis.BinaryExists = vModel.BinaryExists ?? false;
.Leider gibt es kein Äquivalent zum Null-Koaleszenz-Operator, der mit DBNull funktioniert. Dazu müssen Sie den ternären Operator verwenden:
quelle
(object)oldValue ?? (object)DBNull.Value)
wäre gleichbedeutend mit((object)oldValue == null) ? (object)DBNull.Value : (object)oldValue
dem Problem, mit dem sich Robert Rossneys Lösung befasst.quelle
new MyValue()
wird das ausgeführt, auch wennmyValue
es nicht null ist und nicht erforderlich ist !!Verwenden Sie die Equals-Methode:
quelle
Für die Arbeit mit DB Nulls habe ich eine Reihe für meine VB-Anwendungen erstellt. Ich nenne sie Cxxx2, da sie den in CB integrierten Cxxx-Funktionen ähnlich sind.
Sie können sie in meinem CLR-Erweiterungsprojekt sehen
http://www.codeplex.com/ClrExtensions/SourceControl/FileView.aspx?itemId=363867&changeSetId=17967
quelle
Sie schreiben zwei Funktionen
Sie funktionieren sehr gut
quelle
Ich habe die folgende Erweiterungsmethode für meine DataRow-Typen verwendet:
Verwendung:
Ich überprüfe zuerst, ob die Spalte vorhanden ist, da das DataTable-Objekt diese Spalte nicht einmal bereitstellt, wenn keines der Abfrageergebnisse einen Wert ungleich Null für diese Spalte aufweist.
quelle
Verwenden Sie die folgenden Methoden.
quelle
quelle
Dies ist halb als Scherz gedacht, da die Frage irgendwie albern ist.
Dies ist eine Erweiterungsmethode, die jedoch System.Object erweitert, sodass jedes von Ihnen verwendete Objekt jetzt über eine IsNull () -Methode verfügt.
Dann können Sie Tonnen von Code speichern, indem Sie Folgendes tun:
anstelle des super lahmen:
quelle
Object
Objekt erforderlich ist, auf dem gearbeitet werden soll. Wenn das Objekt Nothing war (genau der Fall, auf den Sie in diesem Q testen möchten), gab es keine Instanz, auf der die Erweiterungsklasse ausgeführt werden konnte, und dies würde auch der Fall sein eine NullObject-Ausnahme auslösen.Object
in VB nicht auf eine Erweiterungsmethode zugreifen . Siehe diese SO-Frage oder diesen Blog-Beitrag .