我有一个开关块,它没有像我期望的那样表现。由于我在这个论坛上看过类似的问题,答案并没有直接解决我的问题,但似乎证实了我的想法。请告诉我哪里出错了。此外,我知道我可以完成另一个,也许更好的方式,但这不是我所要求的。我想知道我对跌倒的理解是错误的。
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":')转到另一个案例标签。为什么这段代码无效?
答案 0 :(得分:3)
在C#中,您必须明确地保留case
部分。您可以在第一部分的末尾使用goto case "MSI";
。
当然,switch
块的一部分也可以以break
,return
,throw
结束,这是一个无限循环(C#编译器可以确定它是无限的)等等。