1、string.Empty和“”的區別 這兩個都是表示空字元串。只不過""理論上重新開闢記憶體空間,而String.Empty指向一處。不過優化器會優化的! string.Empty 不分配存儲空間, "" 分配一個長度為空的存儲空間,所以一般用string.Empty,為了以後跨平臺,還是用str ...
1、string.Empty和“”的區別
這兩個都是表示空字元串。只不過""理論上重新開闢記憶體空間,而String.Empty指向一處。不過優化器會優化的!
string.Empty 不分配存儲空間, "" 分配一個長度為空的存儲空間,所以一般用string.Empty,為了以後跨平臺,還是用string.empty
在 C# 中,大多數情況下 "" 和 string.Empty 可以互換使用。比如:
2、 判定為空字元串的幾種寫法,按照性能從高到低的順序是:s.Length == 0 優於 s == string.Empty 優於 s == ""
評論中sunday提供的性能比較圖,大家可以參考下(具體應用不清楚,僅供參考):
3、關於String.Empty和Null的區別:
當你只定義一個str而不為其分配記憶體時用string str=null,但是在接下來你使用它之前必須為它賦值如str=“xxxx”也就是為它初始化
而string str= string.Empty是定義和初始化放在了一起它實際是等價於string str=null;str="";
具體使用時,如果你確定在使用前會給str賦值就用string str=null,否則用string str= string.Empty,不然程式運行時可能會引發空指針異常
4、null和DBNull的區別
Null是.net中無效的對象引用。
DBNull是一個類。DBNull.Value是它唯一的實例。它指資料庫中數據為空(<NULL>)時,在.net中的值。
null表示一個對象的指向無效,即該對象為空對象。
DBNull.Value表示一個對象在資料庫中的值為空,或者說未初始化,DBNull.Value對象是指向有效的對象。
DBNull在DotNet是單獨的一個類型 System.DBNull 。它只有一個值 DBNull.Value 。無法繼承此類。DBNull 直接繼承 Object ,所以 DBNull 不是 string , 不是 int , 也不是 DateTime 。。。
但是為什麼 DBNull 可以表示資料庫中的字元串,數字,或日期呢?原因是DotNet儲存這些數據的類(DataRow等)都是以 object 的形式來儲存數據的。
對於 DataRow , 它的 row[column] 返回的值永遠不為 null , 要麼就是具體的為column 的類型的值 。要麼就是 DBNull 。 所以 row[column].ToString() 這個寫法永遠不會在ToString那裡發生NullReferenceException,但有可能拋下標越界的異常。
DBNull 實現了 IConvertible 。 但是,除了 ToString 是正常的外,其他的ToXXX都會拋出不能轉換的錯誤。
你可以用Convert.IsDBNull來判斷一個值是否DBNull。註意Convert.IsDBNull(null)是false,也就是說null跟DBNull.Value是不等的。