What does “control falls through a switch statement” mean in this context? Control just moves on to the next statement?

I thought if there is no match and a default case doesn’t exist it will raise an exception. Is it not true?

2 points

A switch statement will let control fall through. A switch expression will no, and will throw an exception (and there will also be a compiler warning that it’s not exhaustive before you even run the code)

permalink
report
reply
3 points
*

A switch statement will let control fall through.

I think even switch statement doesn’t allow it because every case needs to be terminated with either break, return or raise. One needs to use case goto if one wants fall thought like behavior:

switch (x)
{
case "One":
    Console.WriteLine("One");
    goto case "Two";
case "Two":
    Console.WriteLine("One or two");
    break;
}

C# outlaws this, because the vast majority of case sections do not fall through, and when they do in languages that allow it, it’s often a mistake caused by the developer forgetting to write a break statement (or some other statement to break out of the switch). Accidental fall-through is likely to produce unwanted behavior, so C# requires more than the mere omission of a break: if you want fall-through, you must ask for it explicitly.

Programming C# 10 ~ Ian Griffiths

permalink
report
parent
reply
3 points

I think even switch statement doesn’t allow it […]

A switch statement allows fall through when the case itself doesn’t have an implementation.

For example this is also considered a fall through:

        switch (x)
        {
            case "One":
            case "Two":
                Console.WriteLine("One or two");
                break;
        }
permalink
report
parent
reply
1 point

TIL!!!

Thank you!

permalink
report
parent
reply
4 points

Means it will be skipped entirely

permalink
report
reply
3 points

I see, thank you! I got confused with “control falls through a switch statement” and “C++ style fall through in switch statements”.

permalink
report
parent
reply
1 point

C# will let you forget simple things and crash or compile error further down the line.

permalink
report
parent
reply
2 points

Unlike c++? Hehe

permalink
report
parent
reply

.NET

!dotnet@programming.dev

Create post

Getting started

Useful resources

IDEs and code editors

Tools

Rules

  • Rule 1: Follow Lemmy rules
  • Rule 2: Be excellent to each other, no hostility towards users for any reason
  • Rule 3: No spam of tools/companies/advertisements

Related communities

Wikipedia pages

Community stats

  • 54

    Monthly active users

  • 266

    Posts

  • 275

    Comments