最佳答案
进去。NET 中有 null
引用,它在任何地方都被用来表示一个对象引用是空的,然后还有 DBNull
,它被数据库驱动程序(和其他一些驱动程序)用来表示... 几乎相同的东西。当然,这会造成很多混乱,转换例程必须大量生产出来,等等。
为什么原版的。NET 作者决定做这个?对我来说毫无意义。他们的文件也没有任何意义:
DBNull 类表示一个不存在的值。例如,在数据库中,表行中的列可能不包含任何数据。也就是说,该列被认为根本不存在,而不仅仅是没有值。DBNull 对象表示不存在的列。此外,COM 互操作使用 DBNull 类来区分指示不存在值的 VT _ NULL 变量和指示未指定值的 VT _ EMPTY 变量。
“不存在专栏”是怎么回事?一个列存在,它只是没有特定行的值。如果它不存在,我会得到一个异常尝试访问特定的单元格,而不是 DBNull
!我可以理解需要区分 VT_NULL
和 VT_EMPTY
,但是为什么不做一个 COMEmpty
类代替?那会是一个更整洁的整体。NET 架构。
我是不是漏掉了什么? 谁能解释一下为什么 DBNull
会被发明出来,以及它能帮助解决什么问题?