是否有人优先考虑如何检查某个值是否为DBNull
?我发现这两个陈述给了我想要的结果,但只是想知道是否有偏好?
if (any is System.DBNull)
同样如下:
if (any == System.DBNull.Value)
谢谢!
答案 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)
这是表格跟随功能的一个很好的例子。无论哪一个执行效率更高,都是要走的路。它看起来像什么,读取它或称为你的坏名称是无关紧要的。有效地使用该语言,不要将语言塑造成新的语言。