Is there a way to make my switch/case fall through to the next case in C#?

后端 未结 4 1784
后悔当初
后悔当初 2021-02-19 03:28

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

相关标签:
4条回答
  • 2021-02-19 04:00

    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;
    }
    
    0 讨论(0)
  • 2021-02-19 04:03

    You don't have a break in your case "1" branch.

    0 讨论(0)
  • 2021-02-19 04:07

    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.

    0 讨论(0)
  • 2021-02-19 04:07

    put a break; after UpdateToV2();

    Couldnt you get rid of the goto case "1" as it will fall through to that anyway?

    0 讨论(0)
提交回复
热议问题