2017-02-17 16 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); 
      } 

Это очистит консоль, а затем записать каждую строку элемент, содержащийся в массиве, в окне консоли, один элемент в каждой строке.

Стоит отметить, что в целом, цикл foreach дороже память мудра, по сравнению с for цикла (see here для деталей). Для того, чтобы написать это, используя 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]); 
      } 

Целое «я» определяет, какой будет печататься элемент, и поэтому с каждым циклом через петлю, то следующий элемент будет отправлен в консоль.

+0

Привет, господа, спасибо большое за ваш тщательный ответ! Я очень ценю всю информацию, а также ссылку. еще раз спасибо – 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

ugh, я идиот ..... спасибо! – Justin

0
foreach (var item in values) 
     { 

      Console.WriteLine(item); 
     } 
4

печати item, не values:

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

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

В случае, если вы хотите напечатать весь массив на одном дыхании, сделайте это с помощью string.Join:

Console.Clear(); 
Console.Write(string.Join(Environment.NewLine, values));  
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