image

Access unlimited bootcamps and 650+ courses forever

60
%OFF
Article image
Marcelo Santos
Marcelo Santos25/08/2023 23:47
Share

Goto em CSharp , você conhece?

  • #.NET C#

A instrução de salto denominada goto, consta na documentação oficial, mais especificamente no item "Referência da linguagem" e está descrita juntamente com as outras instruções de salto como o break, continue e return.

A instrução goto transfere o controle para uma instrução marcada por um rótulo, ou seja, podemos nomear uma label em qualquer parte do código e atribuir a ela através da instrução de salto goto o controle para sair de whiles ou ifs por exemplo.

Vejamos abaixo um exemplo de código onde o rotulo é atribuído ao Enum "CoffeeChoice.Plain" que está no inicio do switch, que logo receberá o controle caso esse mesmo controle entre em "offeeChoice.WithMilk" ou "offeeChoice.WithMilk".

using System;

public enum CoffeeChoice
{
 Plain,
 WithMilk,
 WithIceCream,
}

public class GotoInSwitchExample
{
 public static void Main()
 {
     Console.WriteLine(CalculatePrice(CoffeeChoice.Plain)); // output: 10.0
     Console.WriteLine(CalculatePrice(CoffeeChoice.WithMilk)); // output: 15.0
     Console.WriteLine(CalculatePrice(CoffeeChoice.WithIceCream)); // output: 17.0
 }

 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;
 }
}

Ressalta-se que se um determinado rótulo fornecido não houver um nome válido ou se a instrução goto estive fora do escopo do rótulo, ocorrerá um erro em tempo de compilação.

font:

"https://learn.microsoft.com/pt-br/dotnet/csharp/language-reference/statements/jump-statements"
image: https://linuxhint.com/wp-content/uploads/2022/05/C-Goto.png
Share
Comments (0)