you are viewing a single comment's thread
view the rest of the comments
[–] 1 point 6 days ago* (last edited 6 days ago) (1 child)

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.

  • source
  • parent
  • hideshow 1 child comment
  • 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;
    }
    
  • source
  • parent