yoo*_*er8 14 c# switch-statement
我正在使用switch/case语句来处理已部署应用程序的一些更新.基本上,我想通过案例来执行从当前运行版本到最新版本的更新.
从Visual Studio对我大喊大叫,我了解到C#不允许进入下一个案例(正是我想要做的).从这个问题,我学会了如何做我想做的事.但是,它仍然显然是一个错误.
我得到的是
switch (myCurrentVersion)
{
case null:
case "":
case "0":
UpdateToV1();
goto case "1";
case "1":
UpdateToV2();
}
Run Code Online (Sandbox Code Playgroud)
我在线上收到以下错误case "1"::
错误1控件不能从一个案例标签('case"1":')转到另一个案例标签
难道我做错了什么?我怎么能强迫它掉下来?
Mar*_*ers 31
您需要添加一个break语句,即使它是最后一种情况:
switch (myCurrentVersion)
{
case null:
case "":
case "0":
UpdateToV1();
goto case "1";
case "1":
UpdateToV2();
break;
}
Run Code Online (Sandbox Code Playgroud)
Eri*_*ert 25
这是一个很好的例子,说明措辞不当的错误信息会造成混淆.这里实际违反的C#规则并不是控件从一个开关部分落到另一个开关部分; 这是每个交换机部分的终点必须是不可达的.权利的错误应该是这样的
情况"1"的开关部分的端点必须不可达; 考虑添加'break;'
当我们重新审视Roslyn项目的switch语句的语义分析时,我会看到我们是否可以更改一下这一点的措辞,以便更清楚.
有关此问题和相关问题的更多分析,请参阅我关于此主题的文章.