Portées Locales et Globales
La portée d'une variable correspond à la partie du code où cette variable est accessible. En C#, il existe une portée globale et de nombreuses portées locales possibles.
Lorsqu'une variable est créée en dehors de toute méthode, elle peut être accessible depuis presque n'importe où dans le programme ; on dit alors qu'elle a une portée globale :
main.cs
1234567891011121314151617181920using System; namespace ConsoleApp { internal class Program { static int myVariable = 10; // Variable with a Global Scope static void testMethod() { // Accessing `myVariable` inside `testMethod` Console.WriteLine($"testMethod: {myVariable}"); } static void Main(string[] args) { // Accessing `myVariable` inside `Main` method Console.WriteLine($"Main Function: {myVariable}"); testMethod(); } } }
Remarque
Lorsqu'une variable est déclarée en dehors de toute méthode, il est important d'ajouter le mot-clé
static
avant sa déclaration.
Dans l'exemple ci-dessus, la variable myVariable
a été utilisée à la fois dans la méthode Main
et dans la méthode testMethod
. Cependant, cela n'est pas toujours possible.
Une variable déclarée à l'intérieur d'un bloc de code n'est accessible que dans ce bloc et dans les sous-blocs qu'il contient. Par exemple, une variable déclarée à l'intérieur d'une méthode n'est accessible directement que dans cette méthode. De même, une variable déclarée à l'intérieur d'un bloc if
, else if
ou else
n'est accessible que dans ce bloc. Une telle variable est dite à portée locale.
Prenez un moment pour examiner le code suivant et essayez de comprendre son fonctionnement :
main.cs
123456789101112131415161718192021222324252627282930313233using System; namespace ConsoleApp { class Program { static int variable_1 = 1; static void Main(string[] args) { int variable_2 = 2; if (true) { int variable_3 = 3; Console.WriteLine(variable_1); Console.WriteLine(variable_2); Console.WriteLine(variable_3); } Console.WriteLine(variable_1); Console.WriteLine(variable_2); Console.WriteLine(variable_3); // ERROR HERE Console.WriteLine(variable_4); // ERROR HERE // Note: A variable cannot be used before it's defined in the code } static void myMethod() { int variable_4 = 4; Console.WriteLine(variable_1); Console.WriteLine(variable_2); // ERROR HERE Console.WriteLine(variable_3); // ERROR HERE Console.WriteLine(variable_4); } } }
Dans le code ci-dessus, il y a quatre variables :
variable_1
- portée globale ;variable_2
- portée locale, définie dans la méthode Main ;variable_3
- portée locale, définie dans le blocif
;variable_4
- portée locale, définie dans la méthodemyMethod
.
Le programme ci-dessus peut ne pas se compiler du tout mais il démontre où certaines variables peuvent être accessibles et où elles ne le sont pas. La zone du code où une variable peut être accessible s'appelle la portée de cette variable.
variable_1
est une variable globale donc elle est accessible presque partout ;variable_2
est accessible dans toute la méthodeMain
, y compris dans les sous-blocs comme la conditionif
;variable_3
est accessible uniquement à l'intérieur du blocif
;variable_4
est accessible uniquement à l'intérieur du blocmyMethod
.
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Can you explain the difference between global and local scope in more detail?
Can you give an example of when to use a global variable versus a local variable?
What happens if I try to access a variable outside of its scope?
Awesome!
Completion rate improved to 1.59
Portées Locales et Globales
Glissez pour afficher le menu
La portée d'une variable correspond à la partie du code où cette variable est accessible. En C#, il existe une portée globale et de nombreuses portées locales possibles.
Lorsqu'une variable est créée en dehors de toute méthode, elle peut être accessible depuis presque n'importe où dans le programme ; on dit alors qu'elle a une portée globale :
main.cs
1234567891011121314151617181920using System; namespace ConsoleApp { internal class Program { static int myVariable = 10; // Variable with a Global Scope static void testMethod() { // Accessing `myVariable` inside `testMethod` Console.WriteLine($"testMethod: {myVariable}"); } static void Main(string[] args) { // Accessing `myVariable` inside `Main` method Console.WriteLine($"Main Function: {myVariable}"); testMethod(); } } }
Remarque
Lorsqu'une variable est déclarée en dehors de toute méthode, il est important d'ajouter le mot-clé
static
avant sa déclaration.
Dans l'exemple ci-dessus, la variable myVariable
a été utilisée à la fois dans la méthode Main
et dans la méthode testMethod
. Cependant, cela n'est pas toujours possible.
Une variable déclarée à l'intérieur d'un bloc de code n'est accessible que dans ce bloc et dans les sous-blocs qu'il contient. Par exemple, une variable déclarée à l'intérieur d'une méthode n'est accessible directement que dans cette méthode. De même, une variable déclarée à l'intérieur d'un bloc if
, else if
ou else
n'est accessible que dans ce bloc. Une telle variable est dite à portée locale.
Prenez un moment pour examiner le code suivant et essayez de comprendre son fonctionnement :
main.cs
123456789101112131415161718192021222324252627282930313233using System; namespace ConsoleApp { class Program { static int variable_1 = 1; static void Main(string[] args) { int variable_2 = 2; if (true) { int variable_3 = 3; Console.WriteLine(variable_1); Console.WriteLine(variable_2); Console.WriteLine(variable_3); } Console.WriteLine(variable_1); Console.WriteLine(variable_2); Console.WriteLine(variable_3); // ERROR HERE Console.WriteLine(variable_4); // ERROR HERE // Note: A variable cannot be used before it's defined in the code } static void myMethod() { int variable_4 = 4; Console.WriteLine(variable_1); Console.WriteLine(variable_2); // ERROR HERE Console.WriteLine(variable_3); // ERROR HERE Console.WriteLine(variable_4); } } }
Dans le code ci-dessus, il y a quatre variables :
variable_1
- portée globale ;variable_2
- portée locale, définie dans la méthode Main ;variable_3
- portée locale, définie dans le blocif
;variable_4
- portée locale, définie dans la méthodemyMethod
.
Le programme ci-dessus peut ne pas se compiler du tout mais il démontre où certaines variables peuvent être accessibles et où elles ne le sont pas. La zone du code où une variable peut être accessible s'appelle la portée de cette variable.
variable_1
est une variable globale donc elle est accessible presque partout ;variable_2
est accessible dans toute la méthodeMain
, y compris dans les sous-blocs comme la conditionif
;variable_3
est accessible uniquement à l'intérieur du blocif
;variable_4
est accessible uniquement à l'intérieur du blocmyMethod
.
Merci pour vos commentaires !