2017-02-17 96 views
0

我試圖得到一個數組的內容來顯示,但所有發生的這提示陣列故障在C#

enter image description here

namespace ConsoleApp 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string[] values = { "This", "That", "The Other Thing" }; 
      foreach (var item in values) 
      { 
       Console.Clear(); 
       Console.WriteLine(values); 
      } 

我在做什麼錯?

+1

'控制檯。WriteLine(item);' –

回答

1

目前你正在做的是:

  1. 創建一個新的陣列。
  2. 在數組中存儲字符串元素。
  3. 然後你正在做2件事:
    • 清除控制檯。
    • 將數組對象寫入控制檯(而不是它的元素)。

您正在重複點3的次數等於數組中元素的數目的數目。因此,如果您有5個元素,則只需清除控制檯,然後將數組對象寫入控制檯5次。

一種更好的方式是以下內容:

namespace ConsoleApp 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string[] values = { "This", "That", "The Other Thing" }; 
      Console.Clear(); 
      foreach (var item in values) 
      { 
       Console.WriteLine(item); 
      } 

這將清除控制檯,然後寫包含在陣列中的每個字符串元素,到控制檯窗口,每行一個元素。

值得指出的是,與for循環(詳細信息see here)相比,foreach循環在內存方面更爲昂貴。要使用for循環寫這個問題,可以執行以下操作:

namespace ConsoleApp 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string[] values = { "This", "That", "The Other Thing" }; 
      Console.Clear(); 
      for (int i = 0; i < values.Length; i++) 
      { 
       Console.WriteLine(values[i]); 
      } 

整數的「i」判定元件將打印其中,並且因此與通過循環每個週期內,下一個元素將被髮送到的安慰。

+0

嘿JMadel,非常感謝您的詳盡解答!我非常感謝所有的信息以及鏈接。再次感謝 – Justin

2

現在你正在打印的是陣列本身,當你想打印數組中的項目。

namespace ConsoleApp 
    { 
     class Program 
     { 
      static void Main(string[] args) 
      { 
       string[] values = { "This", "That", "The Other Thing" }; 
       foreach (var item in values) 
       { 
        Console.Clear(); 
        Console.WriteLine(item); 
       } 
+0

呃,我是個白癡.....謝謝! – Justin

0
foreach (var item in values) 
     { 

      Console.WriteLine(item); 
     } 
4

打印item,不values

Console.Clear(); 
Console.Write(string.Join(Environment.NewLine, values));  

// Clear once, not before each output 
Console.Clear(); 

// print item, not entire array 
foreach (var item in values) 
    Console.WriteLine(item); 

如果你要打印的整個陣列一氣呵成,與string.Join幫助做到這一點

1

對挖掘有一點幫助更深層次的解剖上我們在做什麼:

object[] values = { "This", "That", "The Other Thing", 1, 2, 1.0f }; 
foreach (var item in values) 
{ 
    Console.WriteLine($"I am printing `{item}` from `{values}` which is of type `{item.GetType()}`"); 
} 

輸出:

enter image description here

+0

謝謝,感謝您的幫助 – Justin