値が であるかどうかを確認する方法を好む人はいますDBNull
か? これらの 2 つのステートメントで希望する結果が得られることがわかりましたが、好みがあるのでしょうか?
if (any is System.DBNull)
と同じ:
if (any == System.DBNull.Value)
ありがとう!
私は使う傾向があります
if (DBNull.Value.Equals(value)) {
//
}
また
if (Convert.IsDBNull(value)) {
//
}
is
Kevlar623 が言うように反射を使用しません。isinst
これは、ILの操作にマップされます。そのレベルでは、ミサイル誘導システムに取り組んでいない限り、パフォーマンスを比較することはまったくばかげています。
私は使用しますvalue is DBNull
。それは正しいように聞こえますが、偏執狂的な開発者として、存在する唯一の値がDBNull.Value
. バグが発生します。
if (any == System.DBNull.Value) ...
私はそれをタイプではなく値の比較として読んだという理由だけで、それを好みます。
C# を使用している場合は、==
;を使用する必要があります。is
特に のインスタンスが 1 つしかないため、計算コストが高くなるリフレクションを使用しますSystem.DBNull
。
何かを NULL と比較してそれを true にするという考えが嫌いなので、「is System.DBNull」の方が好きです。他の多くの構文 (一体何の複数形なの?) では、anything==NULL は NULL を返します。
理由で DBNull.Value があることを理解しています。知っている。私は私の好みをリストしています:)
これは、フォーム フォー ファンクションの良い例です。どちらがより効率的に実行されるかは、進むべき道です。それがどのように見えるか、どのように読むか、またはそれがあなたを呼ぶ悪い名前は関係ありません. 言語を効率的に使用し、言語を新しいものに成形しないでください。