我有一个令人沮丧的问题。使用我的FormExchange中调用的clsExchange中的以下代码,只需txtPhonesInSystem.Text = ClsExchange.listPhones();
,我只能显示第一个arraylist条目。
public string listPhones()
{
string strphone = string.Empty;
foreach (clsPhone phone in phoneArray)
{
strphone = (strphone + phone.PhoneNumber.ToString() + "\n");
return strphone;
}
return strphone;
}
但是,如果我接受逻辑并放入form.cs上的btn_press事件,它会显示完整的内容。我能看到的唯一区别是使用txtbox.Text = strphone而不是返回strphone。任何建议都非常感谢我一整天都在这里。
修改 谢谢大家的答案。我不知道它必须是那么简单的东西。我想我的大脑不适合这些东西。很遗憾因为我喜欢它。
答案 0 :(得分:2)
foreach
内的这一行是问题所在:
return strphone;
你正在放弃第一张唱片。
顺便说一下,这还是C#1.0吗?如果没有,为什么使用ArrayLists
?
答案 1 :(得分:1)
你在foreach循环中调用return
强制在第一个循环周期退出整个方法,因此strphone
只包含第一个phome编号。
如果您使用的是.NET 3,则可以使用单个LINQ查询简化解决方案:
txtPhonesInSystem.Text =
phoneArray.Select(p => p.PhoneNumber)
.Aggregate((acc, next) => acc + "\n" + next);
否则只需删除return strphone;
代码行。
使用Environment.NewLine代替硬编码"\n"
值也是有意义的。