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?
Means it will be skipped entirely
I see, thank you! I got confused with “control falls through a switch statement” and “C++ style fall through in switch statements”.
C# will let you forget simple things and crash or compile error further down the line.
Unlike c++? Hehe
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)
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 eitherbreak
,return
orraise
. One needs to usecase 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
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; }
TIL!!!
Thank you!