Variablengültigkeitsbereich in C# verstehen: Klassen-, Methoden- und Blockebene
Variablengültigkeitsbereich in C# verstehen
Dieser Leitfaden erklärt, wie Variablengültigkeitsbereich in C# funktioniert, und deckt Klassen-, Methoden- und Blockebene mit klaren, praktischen Beispielen ab.
Variablengültigkeitsbereich bestimmt, wo eine Variable in Ihrem Code zugänglich ist. In C# begegnen Sie drei primären Gültigkeitsbereichen.
- Klassenebene
- Methodenebene
- Blockebene
Klassenebener Variablengültigkeitsbereich
Wenn eine Variable innerhalb einer Klasse, aber außerhalb jeder Methode oder eines Konstruktors deklariert wird, ist sie ein Feld und kann von allen Membern dieser Klasse zugegriffen werden. Dies nennt man Klassenebener Gültigkeitsbereich.
using System;
namespace VariableScope {
class Program {
// Klassenebener Feld
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
In diesem Beispiel ist str ein Feld, daher in der gesamten Program Klasse verfügbar, einschließlich der Display Methode.
Wichtiger Hinweis: Instanzfelder sind von statischen Methoden nicht zugänglich, es sei denn, eine Instanz wird verwendet. Zum Beispiel:
static void Display2() {
// Dies verursacht einen Kompilierfehler
Console.WriteLine(str);
}
Methodenebener Variablengültigkeitsbereich
Variablen, die innerhalb einer Methode deklariert werden, sind lokal zu dieser Methode. Sie können außerhalb der sie definierenden Methode nicht referenziert werden, was als Methodenebener Gültigkeitsbereich bezeichnet wird.
using System;
namespace VariableScope {
class Program {
public void Method1() {
// Lokale Variable
string str = "method level";
}
public void Method2() {
// Versuch, auf str zuzugreifen, verursacht Fehler
Console.WriteLine(str);
}
static void Main(string[] args) {
Program ps = new Program();
ps.Method2();
Console.ReadLine();
}
}
}
Der Versuch, str in Method2 zu verwenden, resultiert im Compilerfehler:
Error CS0103: The name 'str' does not exist in the current context
Umgekehrt kann eine lokale Variable innerhalb derselben Methode verwendet werden:
using System;
namespace VariableScope {
class Program {
public void Display() {
string str = "inside method";
Console.WriteLine(str);
}
static void Main(string[] args) {
Program ps = new Program();
ps.Display();
Console.ReadLine();
}
}
}
Ausgabe
inside method
Blockebener Variablengültigkeitsbereich in C#
Variablen, die innerhalb eines Blocks deklariert werden – wie Schleifen, if Anweisungen oder andere verschachtelte Gültigkeitsbereiche – sind nur innerhalb dieses Blocks zugänglich. Dies nennt man Blockebener Gültigkeitsbereich.
using System;
namespace VariableScope {
class Program {
public void Display() {
for (int i = 0; i <= 3; i++) {
// i ist auf diese for-Schleife beschränkt
}
// Console.WriteLine(i); // ❌ Kompilierfehler
}
static void Main(string[] args) {
Program ps = new Program();
ps.Display();
Console.ReadLine();
}
}
}
Hier kann der Schleifenzähler i nach der Schleife nicht referenziert werden, da sein Gültigkeitsbereich mit dem Block endet.
C Sprache
- Pythons global-Schlüsselwort meistern: Wie & wann man es verwendet
- C++ Zeiger meistern: Konzepte, Beispiele & praktische Anwendungen
- C Variablen, Datentypen und Konstanten – Ein praktischer Leitfaden
- Verilog Assignments verstehen: Typen, Syntax und Best Practices
- Gate-Level Modeling: Vom Hardware-Schaltplan zum Verilog-Code
- Verilog Timescales an jedem Scope verstehen und ausgeben
- Java Variablentypen verstehen: Ein umfassender Leitfaden
- Variablen in C verstehen: Typen, Benennungsregeln & Speicherverwaltung
- C-Gültigkeitsbereiche verstehen: Lokale, Globale & Formale Variablen
- C-Zeiger meistern: Praktische Schritte zur fortgeschrittenen Programmierung