在 foreach 循环中切换语句 - 没有得到预期的结果
Posted
技术标签:
【中文标题】在 foreach 循环中切换语句 - 没有得到预期的结果【英文标题】:Switch statement inside a foreach loop - not getting expected results 【发布时间】:2013-09-11 18:26:05 【问题描述】:所以我试图循环浏览我的应用程序列表框中的项目。列表框将允许您选择多个项目,我有一个方法与列表框中的每个项目相关联。每次循环工作时,我都会增加一个计数器变量。当我将 foreach 循环与下面的 switch 语句一起使用时,它会正确执行第一项,但随后会再次循环通过同一项。我知道我遗漏了一些东西,因为它应该转到列表框中的下一个项目,而不是同一个项目。
string reportname = lstbxReports.SelectedValue.ToString();
int i = 0;
foreach (var report in reportname)
switch (reportname)
case "Overview":
if (i < 1)
PrintOverview(filename);
else if (i >= 1)
PrintOverviewAppend(filename);
break;
case "Sources":
if (i < 1)
PrintSource(filename);
else if (i >= 1)
PrintSourceAppend(filename);
break;
i++
关于如何让 foreach 循环转到所选列表框中的下一项的任何想法或建议?
另外,这只是一个 sn-p,因为我有大约 11 个案例项目要循环。
【问题讨论】:
switch (reportname)
? foreach (var report in reportname)
?对吗?
当您将鼠标悬停在foreach
中的var
上时,您会看到report
是char
(reportname
是一个字符串,并且迭代字符串会给您一个集合字符) - 我假设这不是你想要做的。只是需要注意一些事情,确保您在 foreach
处理某事时迭代正确的集合。
如果您要拥有一组固定的“报告名称”,那么我建议您使用 Enum
。更不容易出错,更易读,更容易switch
on。
【参考方案1】:
您可能想要打开report
,而不是reportname
。
【讨论】:
可能是foreach (var reportname in report)
?
这可能更有意义。
Reportname 是保存列表框中所选项目的字符串。如果我试图改变它,它对我来说是行不通的。哈【参考方案2】:
foreach(string item in listBox.Items)
?
取决于您如何设置列表框的数据源(我假设这是 WinForm?)。如果您通过添加 .Items 或使用设计器创建它,那么这将起作用。但是,如果您使用过 .DataSource ,那么它将无法正常工作。
我个人有一个
List<string> list = SomeMethodWhereIMakeTheList();
并将其设置为:
listbox.DataSource = list;
那么我什至不必触摸 ListBox 来弄乱内容:
list.ForEach(...)
【讨论】:
啊.. 是的,这就是我要做的。谢谢!【参考方案3】:不要在 foreach 中执行打印逻辑。拆分数据然后打印这样的(注意我将 reportname 的名称更改为 reportnames 以表示项目列表)
string reportnames = lstbxReports.SelectedValue.ToString();
var firstReport = reportnames.First(); // No error checking here, would use FirstOrDefault with null checks.
if (firstReport == "OverView")
PrintOverview(filename);
else
PrintSource(filename);
// Now print out the rest
reportnames.Skip(1)
.ToList()
.ForEach(rp =>
if (rp == "OverView")
PrintOverviewAppend(filename);
else
PrintSourceAppend(filename);
);
【讨论】:
以上是关于在 foreach 循环中切换语句 - 没有得到预期的结果的主要内容,如果未能解决你的问题,请参考以下文章