(任何== 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"。发生错误。

这是形式跟随功能的一个很好的例子。谁执行得越有效,就是要走的路。它看起来像什么,看起来像什么,或者它称呼你的坏名字是无关紧要的。有效地使用该语言,不要将其塑造成一种新的语言。