Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Portées Locales et Globales | Méthodes
Bases de C#
course content

Contenu du cours

Bases de C#

Bases de C#

1. Commencer
2. Traiter Avec les Types de Données
3. Structures de Contrôle
4. Boucles
5. Tableaux
6. Méthodes

book
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 :

cs

main

copy
1234567891011121314151617181920
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 :

cs

main

copy
123456789101112131415161718192021222324252627282930313233
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 bloc if ;
  • variable_4 - portée locale, définie dans la méthode myMethod.

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éthode Main, y compris les sous-blocs comme la condition if ;
  • variable_3 est accessible uniquement à l'intérieur du bloc if ;
  • variable_4 est accessible uniquement à l'intérieur du bloc myMethod.
Quel mot-clé devons-nous utiliser pour les variables globales (variables déclarées en dehors de toute méthode) ?

Quel mot-clé devons-nous utiliser pour les variables globales (variables déclarées en dehors de toute méthode) ?

Sélectionnez la réponse correcte

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 6. Chapitre 8
We're sorry to hear that something went wrong. What happened?
some-alt