c#中判斷對象為空的幾種方式(字符串等)


(1)先了解幾個與空類型相關的關鍵字和對象

  Null : 關鍵字表示不引用任何對象的空引用,它是所有引用類型變量的默認值,在2.0版本之前也就只有引用變量類型可以為null,如(string a=null)但在c# 2.0版本之后,Net也引入了可以為Null的值類型,但變量在定義的時候方式有所不同,如:int ? a=null。詳細看http://msdn.microsoft.com/zh-cn/library/1t3y8s4s.aspx。不在內存中開辟內存地址,可用於引用是否可用。

   DBNULL:是一個唯一類,也就是說這種類型的實例只有一個,即DBNull.Value。主要用來指示數據庫中的字段值為空(null)時在.Net中映射的值,另外還可以用於在 COM Interop 中區分 VT_NULL 變量(與空對象關聯)和 VT_EMPTY 變量(與 DBNull.Value 實例關聯)。詳細看http://msdn.microsoft.com/zh-cn/library/system.dbnull%28v=vs.80%29.aspx。它應該有固定不變的內存。

   String.Empty和"":這兩個都表示空字符串,空字符串是一個特殊的字符串,所以它依然是一個字符串實例,也就是說它在內存中依然分配了明確的地址。

   Convert.IsDBNull():返回有關指定對象是否為 DBNull 類型的指示。即是用來判斷對象是否為DBNULL的。其返回值是True或Flase。主要用於和數據庫操作相關的值判斷。

(2)各種的使用方法和效率

     對象的判斷:使用Null可用於任何引用變量是否為空的判斷,是最基本的對象為空判斷方式,在和數據庫相關的操作中使用DBNull.vaule或者Convert.IsDBNUll。

     字符串判斷:string在C#中也是一個引用類型,但其又具有一定的特殊性。我們在使用string時,往往會把“變量值為空的字符串對象”和“變量值為空字符的字符串對象”搞混。所以經常會因為對此理解不深引起好多問題,因為string是我們開發過程使用最頻繁的類型之一,對於字符串的判斷方法,通過對網上資料的整理和自己的實際操作經驗現總結如下:

   string str 

  1:string.IsNullOrEmpty == str  這種方法是我最喜歡用的,它不但一次性能判斷"空的字符串變量",還能判斷“值為空字符串的變量”,並且還可以讓代碼簡潔美觀。判斷的效率也不算低。

  2:str.Length == 0 這種方式,我不怎么喜歡用,不推薦使用。在網上看和自己的實際測試,確實能證明這種判斷方式的執行效率最高,但要使用它你必須保證字符串不null,如果為null就會報出異常,

   3.str == string.Empty 或 str == "" 這兩種方式,我也不推薦使用,他只能判斷“值為空字符串”的字符串變量,而且效率比較低

  4.str == null 這種方式我也不怎么推薦,原因和3一樣。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM