139
you are viewing a single comment's thread
view the rest of the comments
[-] ASoftGlow@programming.dev 19 points 2 days ago
[-] victorz@lemmy.world 3 points 1 day ago

Is "case expr:" really a label? You could put anything in there, like "case 42:". I don't see a label, but maybe I don't know what a label is in C.

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.

[-] victorz@lemmy.world 1 points 1 day ago* (last edited 1 day ago)

What?

If I have a case 42: in C#, I can issue a goto 42 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. ๐Ÿ™

Edit: huh, I guess you can.

[-] TwilightKiddy@scribe.disroot.org 3 points 21 hours ago

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;
}
this post was submitted on 21 Sep 2026
139 points (99.3% liked)

Programmer Humor

33314 readers
499 users here now

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

founded 3 years ago
MODERATORS