2017-02-17 91 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