• TwilightKiddy@scribe.disroot.org
    link
    fedilink
    English
    arrow-up
    1
    ·
    2 days ago

    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.

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