Contenu du cours
Bases de C#
Bases de C#
Portées Locales et Globales
La portée d'une variable est la partie du code où nous pouvons accéder à cette variable. En C#, il existe une portée globale et de nombreuses portées locales possibles.
Lorsque nous créons une variable en dehors de toute méthode, elle peut être accessible depuis presque n'importe où dans le programme, on dit donc qu'elle a une portée globale :
main
using 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
Lorsque vous déclarez une variable en dehors de toute méthode, il est important d'inclure le mot-clé
static
avant sa déclaration.
Dans l'exemple ci-dessus, nous avons accédé à la variable myVariable
à 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 qu'à l'intérieur de ce bloc et de tout sous-bloc de code qu'il contient. Par exemple, une variable déclarée à l'intérieur d'une méthode n'est directement accessible qu'à l'intérieur de 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 qu'à l'intérieur de ce bloc. Une telle variable est dite avoir une portée locale.
Prenez un moment pour examiner le code suivant et essayez de comprendre comment il fonctionne :
main
using 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 démontre où certaines variables peuvent être accessibles et où elles ne le peuvent pas. La zone de code où une variable peut être accessible est appelée 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 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 !