Wie kann ich NULL-Werte vergleichen?
Ich habe ein paar Orte, wo ich brauche, um zu vergleichen 2 (nullable) Werte, um zu sehen, ob Sie gleich sind.
Ich denke, es sollte etwas sein, das framework um dies zu unterstützen, kann aber nichts finden, so ist stattdessen der folgende:
public static bool IsDifferentTo(this bool? x, bool? y)
{
return (x.HasValue != y.HasValue) ? true : x.HasValue && x.Value != y.Value;
}
Dann innerhalb des Codes habe ich if (x.IsDifferentTo(y)) ...
Dann habe ich ähnliche Methoden für nullable int-Werte, null-Werte zulassen verdoppelt usw.
Gibt es nicht einen einfacheren Weg, um zu sehen, wenn zwei nullable-Typen sind die gleichen?
Update:
Stellt sich heraus, dass der Grund, diese Methode gab es, da der code umgewandelt wurde, von VB.Net, wo Nichts = Nichts gibt false zurück (vergleichen Sie mit C#, wobei null == null gibt true zurück). Die VB.Net code sollte verwendet werden .Equals...
statt.
InformationsquelleAutor der Frage David_001 | 2010-02-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
C# unterstützt "hob" - Operatoren, so dass, wenn der Typ (
bool?
in diesem Fall) bekannt ist, zu kompilieren, sollten Sie nur in der Lage sein zu verwenden:Wenn Sie brauchen, Generika, dann
EqualityComparer<T>.Default
ist dein Freund:Beachten Sie jedoch, dass beide Ansätze verwenden die "
null == null
" Ansatz (im Gegensatz zu ANSI-SQL). Wenn Sie brauchen,"null != null
", dann haben Sie, um zu testen, ob separat:InformationsquelleAutor der Antwort Marc Gravell
null-Werte zu.Gleich<T>
?InformationsquelleAutor der Antwort Anton Gogolev
InformationsquelleAutor der Antwort Kashif
Kann die statische Gleich - Methode-System.Objekt:
InformationsquelleAutor der Antwort Mark Seemann
Verwenden Sie einfach
==
oder.Equals()
.InformationsquelleAutor der Antwort Lucero
Nutzen Vergleichen:
http://msdn.microsoft.com/en-us/library/dxxt7t2a.aspx
InformationsquelleAutor der Antwort Randy Minder