有没有人对如何检查一个值是否有偏好DBNull
?我发现这两个陈述给了我想要的结果,但只是想知道是否有偏好?
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
使用计算成本更高的反射,特别是因为只有一个System.DBNull
.
我更喜欢“is System.DBNull”,因为我讨厌将某些东西与 NULL 进行比较并让它为真的想法。许多其他语法(那到底是什么复数?)anything==NULL 返回 NULL。
我知道有 DBNull.Value 是有原因的。我知道。我列出了我的偏好:)
这是形式跟随功能的一个很好的例子。无论哪一个执行效率更高,都是要走的路。它看起来像什么,读起来像什么,或者它叫你的坏名字是无关紧要的。有效地使用语言,不要将语言塑造成一种新的语言。