Variabele Scope in C#: Klasse-, Methode- en Blokniveau
Variabele Scope in C# Begrijpen
Deze gids legt uit hoe variabele scope werkt in C#, met klasse-, methode- en blokniveau scopes met duidelijke, praktische voorbeelden.
Variabele scope bepaalt waar een variabele benaderd kan worden binnen uw code. In C# ontmoet u drie primaire scopes.
- Klasse-niveau Scope
- Methode-niveau Scope
- Blok-niveau Scope
Klasse-Niveau Variabele Scope
Wanneer een variabele gedeclareerd wordt binnen een klasse maar buiten elke methode of constructor, is het een veld en kan het door alle leden van die klasse benaderd worden. Dit heet klasse-niveau scope.
using System;
namespace VariableScope {
class Program {
// Klasse-niveau veld
string str = "Klasse Niveau";
public void Display() {
Console.WriteLine(str);
}
static void Main(string[] args) {
Program ps = new Program();
ps.Display();
Console.ReadLine();
}
}
}
Output
Klasse Niveau
In dit voorbeeld is str een veld, dus beschikbaar doorheen de Program klasse, inclusief de Display methode.
Belangrijk: Instantievelden zijn niet toegankelijk vanuit statische methodes tenzij een instantie gebruikt wordt. Bijvoorbeeld:
static void Display2() {
// Dit veroorzaakt een compileerfout
Console.WriteLine(str);
}
Methode-Niveau Variabele Scope
Variabelen gedeclareerd binnen een methode zijn lokaal voor die methode. Ze kunnen niet gerefereerd worden buiten de methode die ze definieert, wat methode-niveau scope heet.
using System;
namespace VariableScope {
class Program {
public void Method1() {
// Lokale variabele
string str = "methode niveau";
}
public void Method2() {
// Probeer str hier te benaderen zal een fout geven
Console.WriteLine(str);
}
static void Main(string[] args) {
Program ps = new Program();
ps.Method2();
Console.ReadLine();
}
}
}
Het proberen str in Method2 te gebruiken resulteert in de compilerfout:
Error CS0103: The name 'str' does not exist in the current context
Omgekeerd kan een lokale variabele wel gebruikt worden binnen dezelfde methode:
using System;
namespace VariableScope {
class Program {
public void Display() {
string str = "binnen methode";
Console.WriteLine(str);
}
static void Main(string[] args) {
Program ps = new Program();
ps.Display();
Console.ReadLine();
}
}
}
Output
binnen methode
Blok-Niveau Variabele Scope in C#
Variabelen gedeclareerd binnen een blok — zoals lussen, if statements of andere geneste scopes — zijn alleen toegankelijk binnen dat blok. Dit heet blok-niveau scope.
using System;
namespace VariableScope {
class Program {
public void Display() {
for (int i = 0; i <= 3; i++) {
// i is beperkt tot deze for-lus
}
// Console.WriteLine(i); // ❌ compileerfout
}
static void Main(string[] args) {
Program ps = new Program();
ps.Display();
Console.ReadLine();
}
}
}
Hier kan de luscounter i niet gerefereerd worden na de lus, omdat de scope eindigt met het blok.
C Taal
- C++ Pointers Onder de Knie: Concepten, Voorbeelden & Praktische Toepassingen
- C Variabelen, Datatypes en Constanten – Een Praktische Gids
- Variabelen in C: Types, naamgevingsregels en geheugenbeheer
- C-scoperegels: Lokale, globale en formele variabelen
- C-pointers: Praktische stappen naar geavanceerd programmeren
- Variabele Argumenten in C: Een Praktische Gids
- Verilog-toewijzingen begrijpen: types, syntax en best practices
- Gate-Level Modeling: van hardware-schema's naar Verilog-code
- Verilog Timescales begrijpen en printen in elke Scope
- Python's Global Keyword onder de knie krijgen: Hoe en wanneer te gebruiken
- Java Variabele Typen: Uitgebreide Gids