none
ToString的實際作用與陣列顯示的問題 RRS feed

  • 問題

  • 我是一個C#的初學者,自己買書回來看得
    書上有一段程式碼是這樣的

    string str1 = "";
                int[] ary = new int[] { 111, 222, 333, 444, 555, 666 };
                Console.Write("原始陣列:");
                foreach (int num in ary)
                    str1 += num.ToString() + " ";
                Console.WriteLine("{0}", str1);

                Console.Read();

    ------------------------------------------------------------------------------------------------------------------------------

    可是這出來的結果
    用這樣

    int[] ary = new int[] { 111, 222, 333, 444, 555, 666 };
                Console.Write("原始陣列:");
                foreach (int num in ary)
                Console.Write(" {0}", num);

                console.Read();

    就可以顯示出來了
    我現在的問題在於

              

       str1 += num.ToString() + " ";    ←←←這段裡面的ToString()實際作用是幹嘛的,我把它刪掉出來的結果一樣ㄝ?
    然後這段的實際作為,書上寫字串合併,我將它改成

       str1 = num.ToString() + " ";
    畫面就只會顯示:
                              ""原始陣列:666""
    我真的不懂為什麼
    請各位大大指教了

    2013年7月30日 上午 10:44

解答

  • 1. ToString()

    從 MSDN 的說明文件 可以知道:傳回人們可讀取的且與文化特性有關的字串。 在你的例子中,就是傳回該數字的字串表示法。

    如果是自行定義的類別 可以覆寫 ToString()方法。

    另外,之所以 str1 += num.ToString() + " ";  跟 str1 += num + " "; 的結果是相同的,

    那是因為由於 + 運算子預先定義好 當其中一個運算元是字串時,+運算子會將運算元的字串表示串連起來。因此 CLR 會自動對實值型別隱含呼叫.ToString()方法。

    2. str1 += num.ToString() + " ";   跟 str1 = num + " "; 的結果

    兩者的差異就是在運算子的不同, 一個是 = , 一個是 +=

    str1 += num.ToString() + " "; 相當於  str1 = str1 + num.ToString() + " ";

    你可以改寫一下程式碼 , 比較以下兩個程式碼的執行結果,看看 += 及 = 對 str1 內容造成的改變:

                 string str1 = "";
                 int[] ary = new int[] { 111, 222, 333, 444, 555, 666 };
                 Console.WriteLine("原始陣列:");
                 foreach (int num in ary)
                 {
                     str1 += num.ToString() + " ";
                     Console.WriteLine("{0}", str1);
                 }
                 Console.Read();
    
                 string str1 = "";
                 int[] ary = new int[] { 111, 222, 333, 444, 555, 666 };
                 Console.WriteLine("原始陣列:");
                 foreach (int num in ary)
                 {
                     str1 = num.ToString() + " ";
                     Console.WriteLine("{0}", str1);
                 }
                 Console.Read();
    
    

    以下為簽名檔,如果你愛拉椅子坐那就是你的問題。
    先查MSDN文件庫
    再用GOOGLE搜尋
    才到論壇來發問

    這是論壇不是技術支援中心
    沒有人得無償解答你的問題

    在標題或文章註明很急
    不會增加網友回覆速度

    2013年7月30日 下午 03:19

所有回覆

  • 1. ToString()

    從 MSDN 的說明文件 可以知道:傳回人們可讀取的且與文化特性有關的字串。 在你的例子中,就是傳回該數字的字串表示法。

    如果是自行定義的類別 可以覆寫 ToString()方法。

    另外,之所以 str1 += num.ToString() + " ";  跟 str1 += num + " "; 的結果是相同的,

    那是因為由於 + 運算子預先定義好 當其中一個運算元是字串時,+運算子會將運算元的字串表示串連起來。因此 CLR 會自動對實值型別隱含呼叫.ToString()方法。

    2. str1 += num.ToString() + " ";   跟 str1 = num + " "; 的結果

    兩者的差異就是在運算子的不同, 一個是 = , 一個是 +=

    str1 += num.ToString() + " "; 相當於  str1 = str1 + num.ToString() + " ";

    你可以改寫一下程式碼 , 比較以下兩個程式碼的執行結果,看看 += 及 = 對 str1 內容造成的改變:

                 string str1 = "";
                 int[] ary = new int[] { 111, 222, 333, 444, 555, 666 };
                 Console.WriteLine("原始陣列:");
                 foreach (int num in ary)
                 {
                     str1 += num.ToString() + " ";
                     Console.WriteLine("{0}", str1);
                 }
                 Console.Read();
    
                 string str1 = "";
                 int[] ary = new int[] { 111, 222, 333, 444, 555, 666 };
                 Console.WriteLine("原始陣列:");
                 foreach (int num in ary)
                 {
                     str1 = num.ToString() + " ";
                     Console.WriteLine("{0}", str1);
                 }
                 Console.Read();
    
    

    以下為簽名檔,如果你愛拉椅子坐那就是你的問題。
    先查MSDN文件庫
    再用GOOGLE搜尋
    才到論壇來發問

    這是論壇不是技術支援中心
    沒有人得無償解答你的問題

    在標題或文章註明很急
    不會增加網友回覆速度

    2013年7月30日 下午 03:19
  • 關於運算子部份, 請參考

    C# 運算子


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2013年7月31日 上午 03:36
    版主