无论如何,DBNull需要什么?

时间:2011-06-21 08:52:48

标签: c# dbnull

  

可能重复:
  What is the point of DBNull?

自从我开始使用.NET以来,我总是问自己一个问题:

为什么我们需要DBNull类型?简单的空引用是不够的?

MSDN说DBNull“代表一个不存在的值”。从逻辑的角度来看 - 这一句话解释了为什么不能使用空引用 - 因为它是一个空引用而不是缺少值。但引入一种会造成很多麻烦的类型是否足够呢?

顺便说一句:如果有人在辩护DBNull时有话要说,我会非常感激。

4 个答案:

答案 0 :(得分:8)

DBNull自最早版本的.Net框架以来就已存在。

Nullable值类型(Nullable<T>)仅在框架版本2之后才存在。

因为在版本2之前,有可能从数据库中收回一个null int值,你会如何建议它被表示?然后,为了保持一致性,同样用于表示所有DB空值,无论它们是否转换为值或引用类型。

答案 1 :(得分:2)

DBNull.Value表示数据库中的“NULL”;它与'null'不同。

答案 2 :(得分:1)

我们需要它,以便我们可以检测从数据库返回的值是否为null。 通常,Convert.IsDBNull用于执行检查。

DBNull类型与编程值null

不同

答案 3 :(得分:0)

c#中的

null与SQL上下文中的NULL不同,C#中的SQL NULL不是作为字符串而是作为DbNull.Value公开,这是有意义的,如果它不是那样你将如何检查db null ?比较字符串"NULL"不一样......