In C# it’s certainly a label, it’s the same syntax and you can also jump to them with goto, which is actually very convenient sometimes. As far as I know this is an ancient feature and seeing how early C# was mostly inspired by C, I would expect it to behave the same way there.
If I have a case 42: in C#, I can issue a goto42 and resume execution after that case? Or how would that work?
From what I know, labels are only an identifier followed by a colon, like:
stop: printf("stopped.\n");
Or just the label and colon on one line and statements following on subsequent lines. I’ve never seen a switch case expression being called a “label”. Very new to me. Would love to see a minimal demonstration example. 🙏
In C# it’s certainly a label, it’s the same syntax and you can also jump to them with
goto, which is actually very convenient sometimes. As far as I know this is an ancient feature and seeing how early C# was mostly inspired by C, I would expect it to behave the same way there.What?
If I have a
case 42:in C#, I can issue agoto 42and resume execution after that case? Or how would that work?From what I know, labels are only an identifier followed by a colon, like:
stop: printf("stopped.\n");Or just the label and colon on one line and statements following on subsequent lines. I’ve never seen a switch case expression being called a “label”. Very new to me. Would love to see a minimal demonstration example. 🙏
Edit: huh, I guess you can.
Yes, you would do
goto case 42;From MSDN:
private static decimal CalculatePrice(CoffeeChoice choice) { decimal price = 0; switch (choice) { case CoffeeChoice.Plain: price += 10.0m; break; case CoffeeChoice.WithMilk: price += 5.0m; goto case CoffeeChoice.Plain; case CoffeeChoice.WithIceCream: price += 7.0m; goto case CoffeeChoice.Plain; } return price; }