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 大致有四種方式,包括顯式轉換和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.











發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章