自从我开始使用.NET以来,我总是问自己一个问题:
为什么我们需要DBNull类型?简单的空引用是不够的?
MSDN说DBNull“代表一个不存在的值”。从逻辑的角度来看 - 这一句话解释了为什么不能使用空引用 - 因为它是一个空引用而不是缺少值。但引入一种会造成很多麻烦的类型是否足够呢?
顺便说一句:如果有人在辩护DBNull
时有话要说,我会非常感激。
答案 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)
null与SQL上下文中的NULL不同,C#中的SQL NULL不是作为字符串而是作为DbNull.Value
公开,这是有意义的,如果它不是那样你将如何检查db null ?比较字符串"NULL"
不一样......