【问题标题】:Why switch inside foreach loop executes only once为什么foreach循环内的switch只执行一次
【发布时间】:2014-08-18 15:54:29
【问题描述】:

在调试时,我有一个条件,Component.Attributes 包含 Count =3(我的意思是 3 个元素的列表)。 它的内部 foreach 循环是这样的:

foreach(Attributes atrb in Component.Attributes) 
{
    switch (Component.Type)
    {
        case "Combo":
            return validateCombo(atrb);
        case "List":
            return validateList(atrb);
        default:
            return true;
    }
}
return false;

我观察到这个 foreach 循环只对 list 的第一个成员执行。有人可以让我知道为什么它不会为其他列表成员执行(我的意思是计数 2 和 3)吗?是不是因为退货。如何解决?

【问题讨论】:

  • 用调试器单步调试这段代码。
  • 因为每个case都有return语句...
  • 在你的cases中使用break而不是return

标签: c# .net foreach switch-statement


【解决方案1】:

Return 是函数语句的结尾。在到达第一个return 语句时,您的整个函数被终止,因此循环立即结束。

您通常希望在不同的 switch case 之间使用break 语句来阻止执行继续,直到 switch 定义结束。

【讨论】:

    猜你喜欢
    • 2013-11-06
    • 2017-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    • 2013-11-28
    • 1970-01-01
    相关资源
    最近更新 更多