11

有没有人对如何检查一个值是否有偏好DBNull?我发现这两个陈述给了我想要的结果,但只是想知道是否有偏好?

if (any is System.DBNull)

如同:

if (any == System.DBNull.Value)

谢谢!

4

6 回答 6

11

我倾向于使用

if (DBNull.Value.Equals(value)) {
    //
}

或者

if (Convert.IsDBNull(value)) {
    //
}
于 2008-09-19T21:20:12.267 回答
5

is不像 Kevlar623 所说的那样使用反射。它映射到isinstIL 中的操作。在那个层面上,比较性能是完全愚蠢的,除非你正在研究导弹制导系统。

我用value is DBNull. 这听起来很对,作为一个偏执的开发人员,我不能相信存在的唯一价值是DBNull.Value. 错误发生。

于 2008-09-20T22:41:43.433 回答
4
if (any == System.DBNull.Value) ...

我更喜欢那个,只是因为我把它看作是比较值,而不是类型。

于 2008-09-19T21:14:19.860 回答
0

如果你在 C# 中,你应该使用==; is使用计算成本更高的反射,特别是因为只有一个System.DBNull.

于 2008-09-19T21:16:15.660 回答
-1

我更喜欢“is System.DBNull”,因为我讨厌将某些东西与 NULL 进行比较并让它为真的想法。许多其他语法(那到底是什么复数?)anything==NULL 返回 NULL。

我知道有 DBNull.Value 是有原因的。我知道。我列出了我的偏好:)

于 2008-09-19T21:17:13.597 回答
-2

这是形式跟随功能的一个很好的例子。无论哪一个执行效率更高,都是要走的路。它看起来像什么,读起来像什么,或者它叫你的坏名字是无关紧要的。有效地使用语言,不要将语言塑造成一种新的语言。

于 2008-12-23T18:46:21.747 回答