IsDBNull与DBNull.Value,它们是一样的吗?

时间:2017-02-16 00:12:11

标签: .net vb.net evaluation dbnull

修改:为了清楚起见,我没有询问(Null vs DBNull.Value)或(IsDBNull vs IsNull

好吧,我总是使用IsDBNull()来评估数据库字段并检查值是否为DBNull,但我注意到在许多代码示例中,人们使用DBNull.Value来达到同样的目的。方法如下:

If IsDBNull(obj) Then DoSomething()      ' ---> My approach
If obj = DBNull.Value Then DoSomething() ' ---> Theirs.

同样在C#中:

if (obj == DBNull.Value) {DoSomething();}

我做了一些搜索,以确定它们是否相同,或者它们之间是否有任何差异,但找不到任何有用的文章,这些文章一起显示这两种特定的评估方法

This MSDN link演示DBNull.Value.Equals如何与IsDBNull函数做同样的事情,但从未提及/建议使用DBNull.Value进行评估,而不使用Equals功能

所以,我真的很想知道,这两者之间是否存在任何实际差异,以便推荐其中一个相对于另一个?或者他们做同样的事情?

1 个答案:

答案 0 :(得分:-1)

不,他们不一样。 DBNull.Value实际上是一个常量,而IsDBNull是一个返回true或false的函数。

IsDbNull是一个返回布尔值的测试标志,是一个用于 If Statements 的快捷方式。您仍然可以使用Obj = DBNull.value方法,但 IsDbNull是MS的首选方法

但是,如果要使用select case语句,仍需要使用DBNull.value对象

Select case Obj
    Case DBNull.value
    Case "Whatever"
End Select

当然,如果你想将一个字段设置回一个空值,你还需要DBNull.Value。

类似于Double.IsNaN和Double.NaN。