I\'m using a switch/case statement to handle some updates for a deployed application. Basically, I want to waterfall through the cases to perform the update from the current run
You need to add a break
statement even if it's the last case:
switch (myCurrentVersion)
{
case null:
case "":
case "0":
UpdateToV1();
goto case "1";
case "1":
UpdateToV2();
break;
}
You don't have a break
in your case "1"
branch.
This is a great example of how a poorly worded error message creates confusion. The rule of C# that is actually violated here is not that control has fallen through from one switch section to another; it is that the end point of every switch section must not be reachable. The error, by rights, should have been something like
Endpoint of switch section for case "1" must not be reachable; consider adding 'break;'
When we revisit the semantic analysis of switch statements for the Roslyn project I'll see if we can change the wording on this a bit to be more clear.
For more analysis of this and related issues, see my article on the subject.
put a break;
after UpdateToV2();
Couldnt you get rid of the goto case "1"
as it will fall through to that anyway?