goto en C#
Ce tutoriel montrera comment utiliser la syntaxe goto
en C# et fournira quelques exemples d’utilisation pratique dans votre code.
goto
est une instruction de saut inconditionnelle selon laquelle le programme ira automatiquement à une nouvelle partie du code une fois rencontrée. Pour utiliser goto
, vous devez avoir à la fois une instruction marquée par une étiquette et une instance appelant l’étiquette.
Pour créer une étiquette, ajoutez son nom avec deux-points avant l’instruction que vous souhaitez exécuter lorsque l’étiquette est appelée.
Exemple:
using System;
namespace goto_Example1 {
class Program {
static void Main(string[] args) {
int a = 1;
goto print_a;
a = 2;
print_a:
Console.WriteLine(a.ToString());
Console.ReadLine();
}
}
}
Nous initialisons la variable entière a
à un dans cet exemple. Puisque nous appelons immédiatement goto
pour passer à l’instruction print_a
, a
n’est jamais égal à deux. Par conséquent, lorsque nous imprimons la valeur de a
sur la console, ce qui est publié est 1 et non 2.
Production :
1
Quand utiliser goto
en C#
Cependant, goto
n’est plus aussi couramment utilisé maintenant, car il a été critiqué pour avoir aggravé la lisibilité du code car le flux de logique n’est pas aussi clair s’il vous oblige à passer à une section complètement différente.
Cependant, il existe encore des cas où goto
peut être bénéfique et améliorer la lisibilité. Par exemple, il peut échapper des boucles imbriquées et des instructions switch.
Exemple:
using System;
namespace goto_Example2 {
class Program {
static void Main(string[] args) {
// Intialize the integer variable a
int a = 2;
// Run the function test input
TestInput(a);
// Change the value of a and see how it affects the output from TestInput()
a = 1;
TestInput(a);
a = 3;
TestInput(a);
Console.ReadLine();
}
static void TestInput(int input) {
// In this example function, we only want to accept either 1 or 2 as values.
// If we accept the value 1, we want to add to it and then run case 2;
// Print the original value
Console.WriteLine("Input Being Tested: " + input.ToString());
switch (input) {
case 1:
input++;
// If goto isn't called, the input value will not be modified, and its final value would
// have been unchanged
goto case 2;
case 2:
input = input / 2;
break;
default:
break;
}
Console.WriteLine("Final Value: " + input.ToString() + "\n");
}
}
}
Dans l’exemple ci-dessus, nous avons créé un exemple de fonction pour faire différentes choses en fonction de la valeur transmise. Trois cas sont à l’étude. La première est si la valeur est égale à 1. Si tel est le cas, nous ajouterons à la valeur d’entrée puis passerons au cas 2 en utilisant la fonction goto
. La valeur d’entrée serait restée inchangée si goto
n’avait pas été appelé.
Dans le cas 2, nous divisons l’entrée par 2. Enfin, toute autre valeur passée relèvera du cas par défaut et ne sera pas modifiée du tout. Enfin, la valeur finale est imprimée et montre que les cas 1 et 2 donneront la même valeur absolue. Grâce à goto
, le cas peut être appliqué même s’il ne répondait pas initialement aux spécifications du cas en sautant à son énoncé.
Production :
Input Being Tested : 2 Final Value : 1
Input Being Tested : 1 Final Value : 1
Input Being Tested : 3 Final Value : 3