(1)NULL
null 關鍵字是表示不引用任何對象的Null 參考的文字值。null 是參考型別變數的預設值。那麼也只有引用型的變數可以為NULL,如果 int i=null,的話,是不可以的,因為Int是實值型別的。
(2)""和String.Empty
這兩個都是表示Null 字元串。只不過""理論上重新開闢記憶體空間,而String.Empty指向一處。不過最佳化器會最佳化的!
string.Empty不分配儲存空間, ""分配一個長度為空白的儲存空間,所以一般用string.Empty,為了以後跨平台,還是用string.empty。在 C# 中,大多數情況下 "" 和 string.Empty 可以互換使用。比如:
string s = "";
string s2 = string.Empty;
if (s == string.Empty) {
//
}if語句成立
判定為空白字串的幾種寫法,按照效能從高到低的順序是:
s.Length == 0 優於 s == string.Empty 優於 s == ""
注意:
1.string str1="" 和 string str2=null 的區別。
str1是一個Null 字元串,Null 字元串是一個特殊的字串,只不過這個字串的值為空白,在記憶體中是有準確的指向的,string str2=null,這樣定義後,只是定義了一個string 類的引用,str2並沒有指向任何地方,在使用前如果不執行個體化的話,都將報錯。
2.在net 2.0中可用String.IsNullOrEmpty(param)檢測是否為null或為空白值。
當Request.QueryString的標識不存在時返回的是NULL,可以在空串上調用string類的所有方法,但null不可以,不可以在null上調用方法。
(3)DBNULL
DBNull在DotNet是單獨的一個類型, 該類用於指示不存在某個已知值(通常在資料庫應用程式中)。該類只能存在唯一的執行個體,DBNULL.Value, DBNull唯一作用是可以表示資料庫中的字串,數字,或日期,為什麼可以表示原因是DotNet儲存這些資料的類(DataRow等)都是以 object 的形式來儲存資料的。對於 DataRow , 它的 row[column] 返回的值永遠不為 null , 要麼就是具體的為column 的類型的值 。 要麼就是 DBNull 。 所以 row[column].ToString() 這個寫法永遠不會在ToString那裡發生NullReferenceException。DBNull 實現了 IConvertible 。 但是,除了 ToString 是正常的外,其他的ToXXX都會拋出不能轉換的錯誤。
您可以通過將從資料庫欄位檢索到的值傳遞給 DBNull.Value.Equals 方法,確定該欄位值是否為 DBNull 值
(4)Convert.IsDBNull()
Convert.IsDBNull()返回有關指定對象是否為 DBNull 類型的指示,即是用來判斷對象是否為DBNULL的。其傳回值是True或Flase。
文章來源:http://www.cnblogs.com/huangfan1986/archive/2009/05/28/1491343.html