gpt4 book ai didi

c# - 从 switch block 中跳出 foreach 循环

转载 作者:IT王子 更新时间:2023-10-29 03:46:47 26 4
gpt4 key购买 nike

如何在 switch block 中跳出 foreach 循环?

通常,您使用 break,但如果您在 switch block 中使用 break,它只会让您离开 switch block ,foreach 循环将继续执行:

foreach (var v in myCollection)
{
switch (v.id)
{
case 1:
if (true)
{
break;
}
break;
case 2;
break
}
}

当我需要在 switch block 内跳出 foreach 时,我目前正在做的是设置一个 bool 值在循环外为 true 并在每次输入 foreach 时和进入 switch block 之前检查此 bool 的值。像这样:

bool exitLoop;
foreach (var v in myCollection)
{
if (exitLoop) break;
switch (v.id)
{
case 1:
if (true)
{
exitLoop = true;
break;
}
break;
case 2;
break
}
}

这行得通,但我一直认为必须有更好的方法来做到这一点,但我不知道...

编辑:想知道为什么这在 .NET 中没有以它在 PHP 中真正简洁的方式实现正如@jon_darkstar 提到的那样?

$i = 0;
while (++$i) {
switch ($i) {
case 5:
echo "At 5<br />\n";
break 1; /* Exit only the switch. */
case 10:
echo "At 10; quitting<br />\n";
break 2; /* Exit the switch and the while. */
default:
break;
}
}

最佳答案

在这种情况下,您的解决方案几乎是最常见的选择。话虽这么说,我会把你的退出检查放在最后:

bool exitLoop;
foreach (var v in myCollection)
{
switch (v.id)
{
case 1:
if (true)
{
exitLoop = true;
}
break;
case 2;
break
}

// This saves an iteration of the foreach...
if (exitLoop) break;
}

另一个主要选项是重构您的代码,并将 switch 语句和 foreach 循环拉出到一个单独的方法中。然后,您可以从 switch 语句中return

关于c# - 从 switch block 中跳出 foreach 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4044752/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com