是否有一种方法可以使我的切换/案例通过c#中的下一个案例
本文关键字:案例 下一个 我的 可以使 方法 一种 是否 | 更新日期: 2023-09-27 18:14:15
我使用switch/case语句来处理已部署应用程序的一些更新。基本上,我想瀑布式地通过用例执行从当前运行版本到最新版本的更新。
从Visual Studio对我大喊大叫中,我了解到c#不允许掉到下一个case(这正是我想做的)。从这个问题中,我学会了如何去做我想做的事情。然而,这显然仍然是一个错误。
我得到的是
switch (myCurrentVersion)
{
case null:
case "":
case "0":
UpdateToV1();
goto case "1";
case "1":
UpdateToV2();
}
我在case "1":
行上得到以下错误:
错误1控制无法从一个case标签('case "1":')切换到另一个
我做错了什么吗?我怎样才能让它落空呢?
您需要添加一个break
语句,即使它是最后一个case:
switch (myCurrentVersion)
{
case null:
case "":
case "0":
UpdateToV1();
goto case "1";
case "1":
UpdateToV2();
break;
}
这是一个很好的例子,说明措辞糟糕的错误消息是如何造成混乱的。这里真正违反的c#规则并不是控制从一个开关部分掉到另一个开关部分;即每个交换机段的端点必须不可达。按照规定,错误应该是类似
这样的内容。情况"1"的开关段端点必须不可达;考虑添加'break;'
当我们重新审视Roslyn项目的switch语句的语义分析时,我会看看我们是否可以稍微改变一下这方面的措辞,使其更清楚。
有关此问题和相关问题的更多分析,请参阅我关于该主题的文章。
您的case "1"
分支中没有break
。
在UpdateToV2();
后面放一个break;
你不能摆脱goto case "1"
,因为它无论如何都会掉下去?