goto (Riferimenti per C#)

Aggiornamento: novembre 2007

L'istruzione goto passa direttamente il controllo del programma a un'istruzione con etichetta.

L'istruzione goto viene generalmente utilizzata per trasferire il controllo a un'etichetta case specifica di un'istruzione switch o all'etichetta predefinita di un'istruzione switch.

L'istruzione goto viene inoltre utilizzata per uscire dai cicli nidificati più interni.

Esempio

Nell'esempio riportato di seguito viene illustrato l'utilizzo di goto in un'istruzione switch.

class SwitchTest
{
    static void Main()
    {
        Console.WriteLine("Coffee sizes: 1=Small 2=Medium 3=Large");
        Console.Write("Please enter your selection: ");
        string s = Console.ReadLine();
        int n = int.Parse(s);
        int cost = 0;
        switch (n)
        {
            case 1:
                cost += 25;
                break;
            case 2:
                cost += 25;
                goto case 1;
            case 3:
                cost += 50;
                goto case 1;
            default:
                Console.WriteLine("Invalid selection.");
                break;
        }
        if (cost != 0)
        {
            Console.WriteLine("Please insert {0} cents.", cost);
        }
        Console.WriteLine("Thank you for your business.");
    }
}
/*
Sample Input:  2

Sample Output:
Coffee sizes: 1=Small 2=Medium 3=Large
Please enter your selection: 2
Please insert 50 cents.
Thank you for your business.
*/

Nell'esempio seguente viene illustrato come utilizzare l'istruzione goto per uscire dai cicli nidificati.

public class GotoTest1
{
    static void Main()
    {
        int x = 200, y = 4;
        int count = 0;
        string[,] array = new string[x, y];

        // Initialize the array:
        for (int i = 0; i < x; i++)

            for (int j = 0; j < y; j++)
                array[i, j] = (++count).ToString();

        // Read input:
        Console.Write("Enter the number to search for: ");

        // Input a string:
        string myNumber = Console.ReadLine();

        // Search:
        for (int i = 0; i < x; i++)
        {
            for (int j = 0; j < y; j++)
            {
                if (array[i, j].Equals(myNumber))
                {
                    goto Found;
                }
            }
        }

        Console.WriteLine("The number {0} was not found.", myNumber);
        goto Finish;

    Found:
        Console.WriteLine("The number {0} is found.", myNumber);

    Finish:
        Console.WriteLine("End of search.");
    }
}
/*
Sample Input: 44

Sample Output
Enter the number to search for: 44
The number 44 is found.
End of search.
*/

Specifiche del linguaggio C#

Per ulteriori informazioni, vedere le sezioni riportate di seguito in Specifiche del linguaggio C#:

  • 5.3.3.10 Istruzioni break, continue e goto

  • 8.9.3 Istruzione goto

Vedere anche

Concetti

Guida per programmatori C#

Riferimenti

Parole chiave di C#

The goto Statement

Istruzioni di spostamento (Riferimenti per C#)

Altre risorse

Riferimenti per C#