11

値が であるかどうかを確認する方法を好む人はいますDBNullか? これらの 2 つのステートメントで希望する結果が得られることがわかりましたが、好みがあるのでしょうか?

if (any is System.DBNull)

と同じ:

if (any == System.DBNull.Value)

ありがとう!

4

6 に答える 6

11

私は使う傾向があります

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

また

if (Convert.IsDBNull(value)) {
    //
}
于 2008-09-19T21:20:12.267 に答える
5

isKevlar623 が言うように反射を使用しません。isinstこれは、ILの操作にマップされます。そのレベルでは、ミサイル誘導システムに取り組んでいない限り、パフォーマンスを比較することはまったくばかげています。

私は使用しますvalue is DBNullそれは正しいように聞こえますが、偏執狂的な開発者として、存在する唯一の値がDBNull.Value. バグが発生します。

于 2008-09-20T22:41:43.433 に答える
4
if (any == System.DBNull.Value) ...

私はそれをタイプではなく値の比較として読んだという理由だけで、それを好みます。

于 2008-09-19T21:14:19.860 に答える
0

C# を使用している場合は、==;を使用する必要があります。is特に のインスタンスが 1 つしかないため、計算コストが高くなるリフレクションを使用しますSystem.DBNull

于 2008-09-19T21:16:15.660 に答える
-1

何かを NULL と比較してそれを true にするという考えが嫌いなので、「is System.DBNull」の方が好きです。他の多くの構文 (一体何の複数形なの?) では、anything==NULL は NULL を返します。

理由で DBNull.Value があることを理解しています。知っている。私は私の好みをリストしています:)

于 2008-09-19T21:17:13.597 に答える
-2

これは、フォーム フォー ファンクションの良い例です。どちらがより効率的に実行されるかは、進むべき道です。それがどのように見えるか、どのように読むか、またはそれがあなたを呼ぶ悪い名前は関係ありません. 言語を効率的に使用し、言語を新しいものに成形しないでください。

于 2008-12-23T18:46:21.747 に答える