Ich habe die Eigenschaft Person der Klasse Geburtstag als Nullable DateTime definiert. Warum sollte der Koaleszenzoperator null im folgenden Beispiel nicht funktionieren? ?
%Vor%Der Compiler Fehler, den ich bekam, war "Operator '??' kann nicht auf Operanden vom Typ 'System.DateTime' angewendet werden und 'System.DBNull' "
Folgendes wurde ebenfalls kompiliert:
%Vor%Ich habe (wie von Refactor empfohlen) eine Umwandlung zu (object) hinzugefügt, und es wurde kompiliert, funktionierte jedoch nicht ordnungsgemäß und der Wert wurde in beiden Fällen in der sqlserver db als null gespeichert.
%Vor%Kann jemand erklären, was hier vor sich geht?
Ich musste den folgenden plumpen Code verwenden:
%Vor% Das Problem ist, dass DateTime?
und DBNull.Value
nicht vom selben Typ sind, so dass Sie den Null-Koaleszenzoperator nicht verwenden können.
In Ihrem Fall können Sie person.Birthday ?? (object)DBNull.Value
verwenden, um einen Wert vom Typ object
bis Add()
Ihr erstes Problem besteht darin, dass für den Operator ??
oder ?:
die Objekte für beide Optionen vom selben Typ sein müssen. Hier sind sie unterschiedlicher Art.
Tags und Links c# null-coalescing-operator dbnull