天天看點

C# ToString()和Convert.ToString()的差別一、一般用法說明二、ToString()和Convert.ToString()的差別三、object到string的轉換

C# ToString()和Convert.ToString()的差別

一、一般用法說明

  ToString()是Object的擴充方法,是以都有ToString()方法;而Convert.ToString(param)(其中param參數的資料類型可以是各種基本資料類型,也可以是bool或object類對象。

二、ToString()和Convert.ToString()的差別

  一般情況下,這兩種方法都可以通用,但是當傳回的資料類型中有可能出現null值時如果調用ToString方法了,就會傳回NullReferenceException,除非你要捕捉此異常再做處理,否則在這種情況下就應考慮使用Convert.ToString()方法了,因為Convert.ToString(null)不會抛出異常而是傳回空字元串。

  

C# ToString()和Convert.ToString()的差別一、一般用法說明二、ToString()和Convert.ToString()的差別三、object到string的轉換

  主要的差別就如上所示,由于ToString()是擴充方法,擴充自Object,是以轉null報異常。而Convert.ToString()傳回空字元串。

  不過Convert.ToString(),作用不算太大,因為:

static void Main(string[] args)
        {
            string str1 = "";
            Console.WriteLine(Convert.ToString(str1) == null);  //false
            Console.WriteLine(Convert.ToString(str1) == "");    //true

            string str2 = null;
            Console.WriteLine(Convert.ToString(str2) == null);  //true
            Console.WriteLine(Convert.ToString(str2) == "");    //false

            Console.ReadKey();
        }      

  null轉了之後還是null,""轉了之後還是""。

  是以,配合上string.IsNullOrEmpty(Convert.ToString())還是比較友善的。

Console.WriteLine(string.IsNullOrEmpty(Convert.ToString(str1)));    //true
        Console.WriteLine(string.IsNullOrEmpty(Convert.ToString(str1)));    //true      

   另外,如果是跟某字元串對比,那麼使用Convert.ToString()還是很友善的,例如

    if(Convert.ToString(str) == "123")
    {

    }      

三、object到string的轉換

  從 object 到 string 大緻有四種方式,包括顯式轉換和as關鍵詞的使用:obj.ToString()、Convert.ToString()、(string)obj、obj as string。他們都能将 object 對象轉換成 string 對象。

  前兩個方法通常是由别的對象得到 string 對象,它們間的差別如前文所述主要表現在:

  1. ToString() :如果 obj 為 null,調用 obj.ToString() 方法會導緻 NullReferenceException 異常。
  2. Convert.ToString():如果 obj 為 null,調用 Convert.ToString()會傳回null
  3. (string):用強制轉換 (string)obj 要求 obj 的運作時類型必須是 string。如果不是,就會抛出異常。
  4. as :用 as 方法則會相對平穩,當 obj 的運作時類型不是 string 時會傳回 null 而不抛出異常。

  是以在通常在我們需要得到某個對象的 string 表達形式時,我們應該使用 ToString() 和 Convert.ToString(),這時候你就得根據情形選一個,假如你能保證你的對象不為 null,則兩個差不多。如果有可能為 null,你就應該用 Convert.ToString(),如果你希望它為 null 的時候抛出異常,那麼當然可以選擇 ToString()。

  ToString()這個方法太友善了,以緻于以為就它這一種方法, 一般都是轉之前先判斷是否為null.

posted on 2014-02-25 09:24  逆心 閱讀( ...) 評論( ...) 編輯 收藏

轉載于:https://www.cnblogs.com/kissdodog/p/3565988.html

c#