如何“输出”一个字符串数组并将其传递到列表框中

时间:2011-11-17 10:27:52

标签: c# arrays listbox out

这是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 个答案:

答案 0 :(得分:2)

您必须在调用之前添加该变量的声明:

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)); 

答案 1 :(得分:0)

这更像是代码设计问题。方法名称GetSeatInfoStrings清楚地表明它返回一些字符串。基于您对该方法的使用,它看起来像是这样声明:

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

在我看来,最好这样宣布:

public void IEnumerable<string> GetSeatInfoStrings(string choice)

...然后像往常一样从方法中返回数组。 out的主要用途,正如我所看到的那样,当您需要从方法返回多个值时。 Int32.TryParse方法就是一个很好的例子;该方法返回bool表示成功,out参数将包含结果。

在你的情况下,好像你有一个结果,所以使用out只会让人感到困惑。