切换失败不按预期工作

时间:2014-05-20 16:53:09

标签: c# switch-statement

我有一个开关块,它没有像我期望的那样表现。由于我在这个论坛上看过类似的问题,答案并没有直接解决我的问题,但似乎证实了我的想法。请告诉我哪里出错了。此外,我知道我可以完成另一个,也许更好的方式,但这不是我所要求的。我想知道我对跌倒的理解是错误的。

  switch (ncPointType)
        {
            case "MSD":
                adjustDisabled = LastToken(initLine, adjustDisabled);//fall through intentional
            case "MSI":
            case "BI":
                latchingPoint = FirstToken(initLine, latchingPoint);
                break;

现在,根据我的理解,如果ncPointType ==" MSD",adjustDisabled和latchingPoint应该设置。如果" MSI",则应设置latchingPoint。但编译器会标记第一个" case"出现错误"控件不能从一个案例标签('案例" MSD":')转到另一个案例标签。为什么这段代码无效?

1 个答案:

答案 0 :(得分:3)

在C#中,您必须明确地保留case部分。您可以在第一部分的末尾使用goto case "MSI";

当然,switch块的一部分也可以以breakreturnthrow结束,这是一个无限循环(C#编译器可以确定它是无限的)等等。