【发布时间】:2014-05-20 16:53:09
【问题描述】:
我有一个开关块,但它的行为与我预期的不同。当我在这个论坛上查看类似问题时,答案并没有直接解决我的问题,但似乎证实了我的想法。请告诉我哪里出错了。另外,我知道我可以用另一种方式完成这个,而且可能是更好的方式,但这不是我要问的。我想知道我对跌倒的理解哪里有问题。
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”标记为错误“Control cannot fall through from a case label ('case "MSD":') to another. 为什么这段代码无效?
【问题讨论】:
-
这可能会回答你的问题:link
-
错误信息的哪一部分不清楚? C# 中不允许跌倒
-
@BenAaronson:那为什么“MSI”案例的失败可以?
-
@user3642601 查看我在第二条评论中链接到的问题的第一个答案
-
您的错误在于认为 MSI 和 BI 是两个不同的开关部分,由空的开关盒主体隔开。从 MSI 到 BI 没有“失败”,因为它们是相同的部分,而不是两个不同的部分,它们之间是空白的。
标签: c# switch-statement