Portée des variables C#
Portée des variables C#
Dans ce didacticiel, vous découvrirez la portée des variables en C# à l'aide d'exemples.
Une portée de variable fait référence à la disponibilité de variables dans certaines parties du code.
En C#, une variable a trois types de portée :
- Portée du niveau de classe
- Portée au niveau de la méthode
- Portée du niveau bloc
Portée des variables au niveau de la classe C#
En C #, lorsque nous déclarons une variable dans une classe, la variable est accessible dans la classe. Ceci est connu sous le nom de portée variable au niveau de la classe .
Les variables au niveau de la classe sont appelées champs et sont déclarées en dehors des méthodes, des constructeurs et des blocs de la classe. Par exemple,
using System;
namespace VariableScope {
class Program {
// class level variable
string str = "Class Level";
public void display() {
Console.WriteLine(str);
}
static void Main(string[] args) {
Program ps = new Program();
ps.display();
Console.ReadLine();
}
}
}
Sortie
Class Level
Dans l'exemple ci-dessus, nous avons initialisé une variable nommée str dans le Programme classe.
Puisqu'il s'agit d'une variable de niveau classe, nous pouvons y accéder à partir d'une méthode présente à l'intérieur de la classe.
public void display() {
Console.WriteLine(str);
}
En effet, la variable de niveau de classe est accessible dans toute la classe.
Remarque :Nous ne pouvons pas accéder à la variable de niveau classe via des méthodes statiques. Par exemple, supposons que nous ayons une méthode statique dans le Program classe.
static void display2() {
// Access class level variable
// Cause an Error
Console.WriteLine(str);
}
Portée variable au niveau de la méthode
Lorsque nous déclarons une variable à l'intérieur d'une méthode, la variable n'est pas accessible en dehors de la méthode. Ceci est connu sous le nom de portée variable au niveau de la méthode . Par exemple,
using System;
namespace VariableScope {
class Program {
public void method1() {
// display variable inside method
string str = "method level";
}
public void method2() {
// accessing str from method2()
Console.WriteLine(str);
}
static void Main(string[] args) {
Program ps = new Program();
ps.method2();
Console.ReadLine();
}
}
}
Dans l'exemple ci-dessus, nous avons créé une variable nommée str à l'intérieur de method1()
.
// Inside method1()
string str = "method level";
Ici, str est une variable au niveau de la méthode. Il n'est donc pas accessible en dehors de method1()
.
Cependant, lorsque nous essayons d'accéder au str
variable du method2()
// Inside method2
Console.WriteLine(str); // Error code
nous obtenons une erreur.
Error CS0103 The name 'str' does not exist in the current context
En effet, les variables au niveau de la méthode ont une portée à l'intérieur de la méthode dans laquelle elles sont créées. Par exemple,
using System;
namespace VariableScope {
class Program {
public void display() {
string str = "inside method";
// accessing method level variable
Console.WriteLine(str);
}
static void Main(string[] args) {
Program ps = new Program();
ps.display();
Console.ReadLine();
}
}
}
Sortie
inside method
Ici, nous avons créé la str variable et y a accédé dans la même méthode display()
. Par conséquent, le code s'exécute sans aucune erreur.
Portée des variables de niveau bloc en C#
Lorsque nous déclarons une variable à l'intérieur d'un bloc (boucle for, boucle while, if..else), la variable n'est accessible qu'à l'intérieur du bloc. Ceci est connu sous le nom de portée variable au niveau du bloc . Par exemple,
using System;
namespace VariableScope {
class Program {
public void display() {
for(int i=0;i<=3;i++) {
}
Console.WriteLine(i);
}
static void Main(string[] args) {
Program ps = new Program();
ps.display();
Console.ReadLine();
}
}
}
Dans le programme ci-dessus, nous avons initialisé une variable de niveau bloc i
à l'intérieur du for
boucle.
for(int i=0;i<=3;i++) {
}
Depuis je est une variable de niveau bloc, lorsque nous essayons d'accéder à la variable en dehors de for boucle,
// Outside for loop
Console.WriteLine(i);
nous obtenons une erreur.
Error CS0103 The name 'i' does not exist in the current context
Langue C