任何一个是否有关于如何检查,如果值是DBNull
偏好?我发现这两个陈述给了我想要的结果,但只是想知道是否有偏好?(任何== System.DBNull.Value)VS(任何为System.DBNull)
if (any is System.DBNull)
一样:
if (any == System.DBNull.Value)
谢谢!
任何一个是否有关于如何检查,如果值是DBNull
偏好?我发现这两个陈述给了我想要的结果,但只是想知道是否有偏好?(任何== System.DBNull.Value)VS(任何为System.DBNull)
if (any is System.DBNull)
一样:
if (any == System.DBNull.Value)
谢谢!
if (any == System.DBNull.Value) ...
我更喜欢那个,只是因为我读过比较值而不是类型。
,如果你在C#中的时候,你应该使用==
; is
使用反射计算更昂贵,尤其是因为只有一个实例System.DBNull
。
-1为不正确的语句`是使用反射`。使用`is`没有性能问题。 (更确切地说,通常所说的“使用反射”就是使用System.Reflection中的方法,这确实很慢,因此手动地将“is”用作“使用反射”是最好是误导性的,所以误导这个回答者假设结果一定是缓慢的。你是否真的**测试**这个假设?No.) – ToolmakerSteve 2014-08-20 22:01:24
我喜欢“是System.DBNull”更多的是因为我比较讨厌的东西为NULL,并有它是真实的想法。许多其他的语法(什么是复数?)会有什么== NULL返回NULL。
据我所知,有DBNull.Value是有原因的。我知道。我列出我的偏爱:)
咦?这是一个.Net问题。 `x == null`不返回`null`。做谷歌搜索,我还没有找到任何其他语言。也许你正在考虑float操作,其中`x == undefined`返回`undefined`。但是这与'null'不同。 `null'具有特定的含义,并且的确可以与之进行比较。有关这种比较意味着什么的更多细节,以及它是否是一个好主意,请参阅http://stackoverflow.com/questions/3507383/equalsitem-null-or-item-null(在C++中,从哪个的c#语法来了,通常需要与`null`进行比较。) – ToolmakerSteve 2014-08-20 22:12:33
Hi @ToolmakerSteve!男孩这是一个古老的问题,你正在投入。它与数据有关,在SQL中比较(somevar = null)返回null。 – nathaniel 2014-10-15 19:19:42
我倾向于使用
if (DBNull.Value.Equals(value)) {
//
}
或
if (Convert.IsDBNull(value)) {
//
}
is
作为Kevlar623说,不使用反射。它映射到IL中的isinst
操作。在那个层面上,比较性能是愚蠢的,除非你正在研究导弹制导系统。
我用value is DBNull
。这听起来不错,作为一个偏执的开发者,我不能相信存在的唯一价值是DBNull.Value
。错误发生。
我会担心更多关于其他错误的信息,而不是仅仅具有“Value”值的密封系统类是否会以某种方式发出第二个值。不过,我同意你的看法,并不是因为我是偏执狂,而是因为对我心目中的DBNull.Value进行的测试表明,有**可能是其他一些DBNull的可能性。我*知道*没有,但为什么编写的代码听起来像是指特定的DBNull,而实际上只有一个?对我来说,总是显得很愚蠢。 – ToolmakerSteve 2014-08-20 22:24:04
这是形式的一个很好的例子如下功能。无论哪个人更有效率地执行是一条路。它看起来像是,读起来像是,或者称之为坏名字是无关紧要的。有效地使用语言,不要将语言塑造成新的语言。
+1好问题。 – nawfal 2013-12-11 16:43:23