C#中NULL,,DBNULL,String.Empty,Convert.IsDBNull()的区别
C#中的空值的判斷較麻煩,不象在VB6中那么簡單,這些各種空值的判斷和理解對不熟悉的人來說,可能很麻煩,現(xiàn)就我在使用過程中的一點(diǎn)體會和大家共同分享。
(1)NULL
??????????? null 關(guān)鍵字是表示不引用任何對象的空引用的文字值。null 是引用類型變量的默認(rèn)值。那么也只有引用型的變量可以為NULL,如果 int i=null,的話,是不可以的,因為Int是值類型的。Such as: 從數(shù)據(jù)庫中得出的結(jié)果肯定不是Null值,但DataSet ds=null;
(2)DBNULL
??????? DBNull在DotNet是單獨(dú)的一個類型,該類只能存在唯一的實例,DBNULL.Value,DBNull唯一作用是 可以表示數(shù)據(jù)庫中的字符串,數(shù)字,或日期,為什么可以表示原因是DotNet儲存這些數(shù)據(jù)的類(DataRow等)都是以 object 的形式來儲存數(shù)據(jù)的。對于 DataRow , 它的 row[column] 返回的值永遠(yuǎn)不為 null , 要么就是具體的為column 的類型的值 。 要么就是 DBNull 。 所以 row[column].ToString() 這個寫法永遠(yuǎn)不會在ToString那里發(fā)生NullReferenceException。DBNull 實現(xiàn)了 IConvertible 。 但是,除了 ToString 是正常的外,其他的ToXXX都會拋出不能轉(zhuǎn)換的錯誤。Such as: dt.rows[i]["column"]!=DBNull.value判斷數(shù)據(jù)庫中得出的結(jié)果是否為空.
(3)""和String.Empty
這兩個都是表示空字符串,其中有一個重點(diǎn)是string str1="" 和 string str2=null 的區(qū)別,這樣定義后,str1是一個空字符串,空字符串是一個特殊的字符串,只不過這個字符串的值為空,在內(nèi)存中是有準(zhǔn)確的指向的,string str2=null,這樣定義后,只是定義了一個string 類的引用,str2并沒有指向任何地方,在使用前如果不實例化的話,都將抱錯。
(4)Convert.IsDBNull()
?????? Convert.IsDBNull()返回有關(guān)指定對象是否為 類型的指示,即是用來判斷對象是否為DBNULL的。其返回值是True或Flase。
轉(zhuǎn)載于:https://www.cnblogs.com/xuezheng/archive/2007/08/22/865543.html
總結(jié)
以上是生活随笔為你收集整理的C#中NULL,,DBNULL,String.Empty,Convert.IsDBNull()的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jieba模块
- 下一篇: 安装SQL SERVER 2008时出现