System.DBNull.Value与Null的区别
Null是.net中無效的對象引用。
DBNull是一個(gè)類。DBNull.Value是它唯一的實(shí)例。它指數(shù)據(jù)庫中數(shù)據(jù)為空(<NULL>)時(shí),在.net中的值。
以下是我測試的一個(gè)例子。
例:表tbl_Student
id????name????address
1??????jim??????<NULL>
將上述表數(shù)據(jù)填充到.net?的名為dt的DataTable中。
dt.Rows[0]["address"]不等于null但是等于DBNull.Value.
可見null表示一個(gè)對象的指向無效,即該對象為空對象。
DBNull.Value表示一個(gè)對象在數(shù)據(jù)庫中的值為空,或者說未初始化,DBNull.Value對象是指向有效的對象。
另外注:對上述dt,如果有如下代碼:dt.Rows[0][100]。結(jié)果如何?
并非想象中的null。而是出現(xiàn)異常:索引超出數(shù)組界限。
對于普通的引用類型變量,如果指向?qū)ο鬄閚ull,則會(huì)提示:未將對象引用設(shè)置到對象實(shí)例。但對于使用dt.Rows[i][j]取值,如果第i行存在但i行沒有j列,則直接出現(xiàn)異常,不會(huì)返回一個(gè)指向null的dt.Rows[i][j]。
所以:使用(dt.Rows[0][100]!=null)判斷沒有意義。為避免0行的100列不存在。可以判斷(dt.Rows[0].ItemArray.Length>100).
轉(zhuǎn)載于:https://www.cnblogs.com/ShaYeBlog/archive/2013/03/25/2980174.html
總結(jié)
以上是生活随笔為你收集整理的System.DBNull.Value与Null的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 听了一个讲座
- 下一篇: [转载]android一些、面试题