2016-12-16 4 views
-2

Я создал список, и в этом списке мне удалось скопировать массив, теперь я хочу распечатать весь список, и я получаю сообщение «System.String []" так как я предполагаю, что он пытается напечатать сами массивы, а не все содержимое внутри массивов.Печать массивов внутри списка

Как это сделать?

List<string[]> loggBoken = new List<string[]>(); 

случай 1:

string[] post = new string[2]; 
post[0] = Console.Readline() 
post[1] = Console.ReadLine(); 
loggBoken.Add(post.ToArray()); 

Вот код, который не работает:

foreach (string[] item in loggBoken) 
{ 
    Console.WriteLine("\t" + item); 
} 
+0

Где код, где вы пытаетесь напечатать значения? – C1sc0

+0

* Теперь я хочу распечатать весь список, и я получаю сообщение *: Хорошо, но как вы печатаете? –

+0

Метод Add() добавит только один элемент в список. Используйте метод AddRange(), чтобы добавить массив в существующий список. – jdweng

ответ

2

Там вы несколько способов:

Две петли:

foreach (string[] line in loggBoken) { 
    foreach(string item in line) { 
     Console.Write(item); 
     Console.Write('\t'); 
    } 

    Console.WriteLine(); 
    } 

Один цикл, один Join:

foreach (string[] line in loggBoken) 
    Console.WriteLine(string.Join("\t", line)); 

нет петель, два Join s (и Linq):

Console.Write(string.Join(Environment.NewLine, loggBoken 
    .Select(line => string.Join("\t", line)))); 
+0

Хорошо, спасибо за подробный ответ! – LePelican

0

В исходном коде вы получите результат:

«System .String [] "

потому что Console.WriteLine внутренне вызывает метод ToString (унаследованный от класса Object). Этот метод печатает по умолчанию полное имя типа объекта. В вашем случае это string[], который является жителем пространства имен System таким образом: System.String[]

Существует прекрасный метод, называемый String.Join() печатать все элементы коллекции в один удар:

foreach (string[] item in loggBoken) 
{ 
    Console.WriteLine(String.Join("\t", item)); 
} 
+0

Спасибо! :) И это действительно красиво;) – LePelican

0
 var loggBoken = new List<string[]>(); 
     string[] post = new string[2]; 
     post[0] = "a"; 
     post[1] = "b"; 
     loggBoken.Add(post); //don't need to specifie ToArray() 

     // use join to create total string of every item in current array 
     // split by new line 
     foreach (string[] item in loggBoken) 
     {     
       MessageBox.Show(String.Join("\n", item));     
     } 
+0

О, я думал, мне нужно было указать это, теперь я знаю, спасибо! – LePelican

Смежные вопросы