(any == System.DBNull.Value)vs(any is System.DBNull)

时间:2008-09-19 21:13:10

标签: .net null dbnull

是否有人优先考虑如何检查某个值是否为DBNull?我发现这两个陈述给了我想要的结果,但只是想知道是否有偏好?

if (any is System.DBNull)

同样如下:

if (any == System.DBNull.Value)

谢谢!

6 个答案:

答案 0 :(得分:11)

我倾向于使用

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

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

答案 1 :(得分:5)

is不使用反射,正如Kevlar623所说。它映射到IL中的isinst操作。在那个层面上,比较性能是完全愚蠢的,除非你正在研究导弹制导系统。

我使用value is DBNull这听起来不对,作为一个偏执的开发者,我不相信现存的唯一价值是DBNull.Value。错误发生。

答案 2 :(得分:4)

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

我更喜欢那个,因为我把它读作比较值,而不是类型。

答案 3 :(得分:0)

如果您使用的是c#,则应使用==; is使用反映计算成本更高,尤其是因为System.DBNull只有一个实例。

答案 4 :(得分:-1)

我更喜欢“is System.DBNull”,因为我讨厌将某些内容与NULL进行比较并让它成为现实的想法。许多其他语法(它到底是多少?)会有任何东西== NULL返回NULL。

我明白有DBNull.Value是有原因的。我知道。我正在列出我的偏好:)

答案 5 :(得分:-2)

这是表格跟随功能的一个很好的例子。无论哪一个执行效率更高,都是要走的路。它看起来像什么,读取它或称为你的坏名称是无关紧要的。有效地使用该语言,不要将语言塑造成新的语言。