C#-Variablenbereich
C#-Variablenbereich
In diesem Tutorial lernen Sie anhand von Beispielen den Gültigkeitsbereich von Variablen in C# kennen.
Ein Variablenbereich bezieht sich auf die Verfügbarkeit von Variablen in bestimmten Teilen des Codes.
In C# hat eine Variable drei Geltungsbereichstypen:
- Umfang auf Klassenebene
- Anwendungsbereich auf Methodenebene
- Bereich auf Blockebene
Variablenbereich auf C#-Klassenebene
Wenn wir in C# eine Variable innerhalb einer Klasse deklarieren, kann auf die Variable innerhalb der Klasse zugegriffen werden. Dies wird als Variablenbereich auf Klassenebene bezeichnet .
Variablen auf Klassenebene werden als Felder bezeichnet und außerhalb von Methoden, Konstruktoren und Blöcken der Klasse deklariert. Zum Beispiel
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();
}
}
}
Ausgabe
Class Level
Im obigen Beispiel haben wir eine Variable namens str initialisiert innerhalb des Programms Klasse.
Da es sich um eine Variable auf Klassenebene handelt, können wir von einer innerhalb der Klasse vorhandenen Methode darauf zugreifen.
public void display() {
Console.WriteLine(str);
}
Dies liegt daran, dass die Variable auf Klassenebene in der gesamten Klasse zugänglich ist.
Hinweis :Wir können nicht über statische Methoden auf die Variable auf Klassenebene zugreifen. Angenommen, wir haben eine statische Methode innerhalb des Programms Klasse.
static void display2() {
// Access class level variable
// Cause an Error
Console.WriteLine(str);
}
Variablenumfang auf Methodenebene
Wenn wir eine Variable innerhalb einer Methode deklarieren, kann außerhalb der Methode nicht auf die Variable zugegriffen werden. Dies wird als Variablenbereich auf Methodenebene bezeichnet . Zum Beispiel
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();
}
}
}
Im obigen Beispiel haben wir eine Variable namens str erstellt innerhalb von method1()
.
// Inside method1()
string str = "method level";
Hier, str ist eine Variable auf Methodenebene. Daher kann außerhalb von method1()
nicht darauf zugegriffen werden .
Wenn wir jedoch versuchen, auf str
zuzugreifen Variable aus method2()
// Inside method2
Console.WriteLine(str); // Error code
wir erhalten eine Fehlermeldung.
Error CS0103 The name 'str' does not exist in the current context
Dies liegt daran, dass Variablen auf Methodenebene einen Gültigkeitsbereich innerhalb der Methode haben, in der sie erstellt werden. Zum Beispiel
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();
}
}
}
Ausgabe
inside method
Hier haben wir die str erstellt -Variable und griff innerhalb derselben Methode display()
darauf zu . Daher läuft der Code ohne Fehler.
Variablenbereich auf Blockebene in C#
Wenn wir eine Variable innerhalb eines Blocks deklarieren (for-Schleife, While-Schleife, if..else), kann auf die Variable nur innerhalb des Blocks zugegriffen werden. Dies wird als Variablenbereich auf Blockebene bezeichnet . Zum Beispiel
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();
}
}
}
Im obigen Programm haben wir eine Variable i
auf Blockebene initialisiert innerhalb der for
Schleife.
for(int i=0;i<=3;i++) {
}
Da ich ist eine Variable auf Blockebene, wenn wir versuchen, auf die Variable außerhalb von for zuzugreifen Schleife,
// Outside for loop
Console.WriteLine(i);
wir erhalten eine Fehlermeldung.
Error CS0103 The name 'i' does not exist in the current context
C Sprache