(any == System.DBNull.Value) vs (any は System.DBNull)
質問
値が以下であるかどうかを確認する方法に好みがある人はいますか? DBNull
?これら 2 つのステートメントにより希望の結果が得られることがわかりましたが、優先順位があるかどうか疑問に思っていますか?
if (any is System.DBNull)
と同じ:
if (any == System.DBNull.Value)
ありがとう!
解決
if (any == System.DBNull.Value) ...
私がそっちのほうを好むのは、単に型ではなく値の比較として読んだからです。
他のヒント
私がよく使うのは
if (DBNull.Value.Equals(value)) {
//
}
または
if (Convert.IsDBNull(value)) {
//
}
is
Kevlar623 が言うように反射を使用しません。にマッピングされます isinst
イリノイ州での活動。そのレベルでは、ミサイル誘導システムに取り組んでいない限り、性能を比較するのはまったく愚かです。
私が使う value is DBNull
. それは正しいように聞こえますが、偏執的な開発者として、これまでに存在する唯一の値が信頼できるわけではありません。 DBNull.Value
. 。バグが発生します。
C#を使用している場合は、使用する必要があります ==
; is
特にインスタンスが 1 つしかないため、計算コストが高くなるリフレクションを使用します。 System.DBNull
.
私は、何かを NULL と比較してそれが true になるという考えが嫌いなので、「is System.DBNull」の方が好きです。他の多くの構文 (その複数形は何でしょうか?) では、anything==NULL が NULL を返します。
DBNull.Value には理由があると理解しています。知っている。私の好みを列挙します:)
これは、フォームが機能に従う良い例です。どちらがより効率的に実行されるかを選択します。それがどのように見えるか、どのように読むか、またはそれがあなたに呼ぶ悪い名前は関係ありません。言語を効率的に使用し、言語を新しい言語に成形しないでください。