(any == System.DBNull.Value)vs(any is System.DBNull)
题
是否有人偏好如何检查值是否为 DBNull
?我发现这两个陈述给了我想要的结果,但只是想知道是否有偏好?
if(any is System.DBNull)
同样如下:
if(any == System.DBNull.Value)
谢谢!
解决方案
if (any == System.DBNull.Value) ...
我更喜欢那个,因为我把它读作比较值,而不是类型。
其他提示
我倾向于使用
if (DBNull.Value.Equals(value)) {
//
}
或
if (Convert.IsDBNull(value)) {
//
}
不使用反射,正如Kevlar623所说。它映射到IL中的 isinst
操作。在那个层面上,比较性能是完全愚蠢的,除非你正在研究导弹制导系统。
我使用值是DBNull
。这听起来不错,作为一个偏执的开发者,我不能相信存在的唯一值是 DBNull .value的代码>。错误发生。
如果你在c#中,你应该使用 ==
; is
使用反射,计算成本更高,特别是因为只有一个 System.DBNull
的实例。
我喜欢“is System.DBNull”更多是因为我讨厌将某些东西与NULL进行比较并让它成为现实的想法。许多其他语法(它到底是多少?)会有任何东西== NULL返回NULL。
我明白有DBNull.Value是有原因的。我知道。我正在列出我的偏好:)
这是表格跟随功能的一个很好的例子。无论哪一个执行效率更高,都是要走的路。它看起来像什么,读取它或称为你的坏名称是无关紧要的。有效地使用该语言,不要将语言塑造成新的语言。
不隶属于 StackOverflow