Frage

Hat jemand eine Präferenz, wie man prüft, ob ein Wert ist? DBNull? Ich habe festgestellt, dass diese beiden Aussagen mir die gewünschten Ergebnisse geben, aber ich habe mich nur gefragt, ob es eine Präferenz gibt?

if (any is System.DBNull)

gleich wie:

if (any == System.DBNull.Value)

Vielen Dank!

War es hilfreich?

Lösung

if (any == System.DBNull.Value) ...

Ich bevorzuge das, einfach weil ich das als Vergleich von Werten und nicht als Typ gelesen habe.

Andere Tipps

Ich neige dazu zu verwenden

if (DBNull.Value.Equals(value)) {
    //
}

oder

if (Convert.IsDBNull(value)) {
    //
}

is Verwendet keine Reflexion, wie Kevlar623 sagt. Es kartiert dem isinst Operation in IL. Auf dieser Ebene ist der Vergleich der Leistung geradezu albern, es sei denn, Sie arbeiten an einem Raketen -Leitsystem.

ich benutze value is DBNull. Es klingt einfach richtig und als paranoider Entwickler kann ich nicht vertrauen, dass der einzige Wert, der jemals existiert, ist DBNull.Value. Fehler passieren.

if you're in c#, you should use ==; is uses reflection which is more expensive to compute, especially since there's only ever one instance of System.DBNull.

I like the "is System.DBNull" more because I hate the idea of comparing something to NULL and having it be true. Many other syntaxes (what the hell is the plural of that?) would have anything==NULL return NULL.

I understand that there's DBNull.Value for a reason. I know. I'm listing my PREFERENCE :)

This is a good example of form follows function. Whichever one executes more efficiently is the way to go. What it looks like, reads like, or bad names it calls you is irrelevant. Use the language efficiently, don't mold the language into a new one.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top