【发布时间】:2009-06-11 17:48:16
【问题描述】:
作为一个简单的例子,假设我有以下网格,我正在寻找一个特定的单元格值。找到后,我不再需要处理循环。
foreach(DataGridViewRow row in grid.Rows)
{
foreach(DataGridViewCell cell in row.Cells)
{
if(cell.Value == myValue)
{
//Do Something useful
//break out of both foreach loops.
}
}
}
这是如何在 C# 中完成的。在 Java 中,我可以使用标签来命名最外层的循环,然后中断该循环,但我似乎在 C# 中找不到等价物。
在 C# 中完成此任务的最简单方法是什么?我知道我可以设置一个布尔标志,并在外循环中检查它以跳出那个标志,但这似乎太冗长了。
谢谢,
【问题讨论】:
-
这个例子有一些有用的反建议,但我不认为一般问题总是可以愉快地重组掉。例如。我来到这里是因为我的小解析器方法在 while 循环内有一个开关(状态)。当然,如果我将所有 switch 案例转换为 if...else if,我可以使用 break,但我宁愿不这样做。将开关移动到函数中是可行的,但需要传递大量参数(并且会降低性能?)。我捏着鼻子跟着goto走了。我认为布尔标志(加上继续进入 while 条件?)将是另一个最佳选择。