• Victor@lemmy.world
    link
    fedilink
    arrow-up
    1
    ·
    edit-2
    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
      link
      fedilink
      English
      arrow-up
      3
      ·
      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;
      }