我应该用什么来比较DBNull?使用DBNull.Value或ToString()。IsNullOrEmpty()

时间:2010-08-03 06:06:24

标签: .net null dataset dbnull

我可以使用任何方法检查数据行上的DBnull

使用

if(dr[0][0]==DBNull.Value)
//do somethin

或通过

if(dr[0][0].ToString().IsNullOrEmpty())
//do something

在这两种情况下,我都会得到相同的结果。

但是哪一个是直接正确的方法。哪个会使用更少的资源

4 个答案:

答案 0 :(得分:18)

第一种方式有点正确。 但是,更容易接受的方式是:

if ( dr[0][0] is DBNull )

第二种方式肯定是不正确的。如果你使用第二种方式,你将在两种情况下成真:

  1. 您的值是DBNull
  2. 您的值为空字符串

答案 1 :(得分:6)

从概念上讲,与DBNull.Value的比较是正确的。

您也可以使用:

if (Convert.IsDBNull(dr[0]))
{
}

你也可以使用,我不是它的粉丝,纯粹是因为它是一种类型比较而不是价值比较:

if (dr[0] is DBNull)
{
}

答案 2 :(得分:0)

总是使用:

dr[0].IsNull(0) 

假设此功能的创建者知道最佳方式/最有效的比较方式..

答案 3 :(得分:0)

最简单的方法

if (dr[0][0] == DBNull.Value)
//do somethin

完全有效且可读。

即使==比较引用,它也适用于DBNUll.Value is the only instance of DBNull class - 因此所有DBNull值实际上都是这个确切的引用。