(任何== System.DBNull.Value)与(任何是System.DBNull)
时间:2020-03-06 14:27:52 来源:igfitidea点击:
是否有人喜欢如何检查值是否为DBNull?我发现这两个语句给了我想要的结果,但是只是想知道是否有偏好?
如果(任何是System.DBNull)
与...一样:
如果(任何== System.DBNull.Value)
谢谢!
解决方案
if (any == System.DBNull.Value) ...
我更喜欢那一种,因为我读它是在比较值,而不是类型。
如果我们使用的是c#,则应使用==
; " is"使用反射机制,因此计算起来会更加昂贵,尤其是因为只有System.DBNull的一个实例。
我更喜欢" is System.DBNull",因为我讨厌将某些内容与NULL进行比较并使其为真的想法。许多其他语法(到底是什么复数?)将具有== NULL的任何值,返回NULL。
我知道有一个DBNull.Value是有原因的。我知道。我列出了我的偏好:)
我倾向于使用
if (DBNull.Value.Equals(value)) { // }
或者
if (Convert.IsDBNull(value)) { // }
"是"不像Kevlar623所说的那样使用反射。它映射到IL中的" isinst"操作。在这个水平上,除非我们正在使用导弹制导系统,否则比较性能实在是愚蠢的。
我用value is DBNull
。听起来不错,作为一个偏执的开发人员,我不敢相信存在的唯一价值就是" DBNull.Value"。发生错误。
这是形式跟随功能的一个很好的例子。谁执行得越有效,就是要走的路。它看起来像什么,看起来像什么,或者它称呼你的坏名字是无关紧要的。有效地使用该语言,不要将其塑造成一种新的语言。