Как «вывести» массив строк и передать его в список - PullRequest
1 голос
/ 17 ноября 2011

Это часть UpdateGUI ():

DisplayOptions choice = (DisplayOptions)comboBox1.SelectedIndex;
seatMngr.GetSeatInfoStrings(choice, out strSeatInfoStrings);
listBox1.Items.Clear();
listBox1.Items.AddRange(strSeatInfoStrings);

Компилятор жалуется на эту строку (и параметр последней строки):

seatMngr.GetSeatInfoStrings(choice, out strSeatInfoStrings);

Что я 'я пытаюсь сделать, это взять массив (strSeatInfoStrings) и поместить его в список.

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 17 ноября 2011

Вы должны добавить объявление этой переменной перед вызовом:

DisplayOptions choice = (DisplayOptions)comboBox1.SelectedIndex;
string[] strSeatInfoStrings;
seatMngr.GetSeatInfoStrings(choice, out strSeatInfoStrings); 
listBox1.Items.Clear(); 
listBox1.Items.AddRange(strSeatInfoStrings); 

Другое решение - изменить сигнатуру вашего метода и вернуть значения, чтобы вы могли написать это

DisplayOptions choice = (DisplayOptions)comboBox1.SelectedIndex;
listBox1.Items.Clear(); 
listBox1.Items.AddRange(seatMngr.GetSeatInfoStrings(choice)); 
0 голосов
/ 17 ноября 2011

Это больше похоже на проблему дизайна кода. Имя метода GetSeatInfoStrings четко выражает, что он возвращает несколько строк. В зависимости от того, как вы используете метод, похоже, он объявлен так:

public void GetSeatInfoStrings(string choice, out string[] result)

На мой взгляд, было бы гораздо лучше объявить это так:

public void IEnumerable<string> GetSeatInfoStrings(string choice)

... и просто вернуть массив из метода, как обычно. Основной использует out, как я вижу, когда вам нужно вернуть более одного значения из метода. Метод Int32.TryParse является отличным примером; метод возвращает bool, указывающий на успех, а параметр out будет содержать результат.

В вашем случае кажется, что у вас есть один результат, поэтому использование out будет только запутанным.

...