C# Variabel bereik
C# variabel bereik
In deze tutorial leer je aan de hand van voorbeelden over variabel bereik in C#.
Een variabel bereik verwijst naar de beschikbaarheid van variabelen in bepaalde delen van de code.
In C# heeft een variabele drie soorten bereik:
- Toepassingsgebied op klasniveau
- Reikwijdte methodeniveau
- Reikwijdte blokniveau
C# Variabel bereik op klasseniveau
Als we in C# een variabele binnen een klasse declareren, is de variabele toegankelijk binnen de klasse. Dit staat bekend als variabel bereik op klasseniveau .
Variabelen op klasseniveau staan bekend als velden en worden gedeclareerd buiten methoden, constructors en blokken van de klasse. Bijvoorbeeld,
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();
}
}
}
Uitvoer
Class Level
In het bovenstaande voorbeeld hebben we een variabele met de naam str . geïnitialiseerd binnen het Programma klasse.
Omdat het een variabele op klasseniveau is, kunnen we er toegang toe krijgen via een methode die aanwezig is in de klasse.
public void display() {
Console.WriteLine(str);
}
Dit komt omdat de variabele op klasniveau toegankelijk is in de hele klas.
Opmerking :We hebben geen toegang tot de variabele op klasseniveau via statische methoden. Stel bijvoorbeeld dat we een statische methode hebben in het Programma klasse.
static void display2() {
// Access class level variable
// Cause an Error
Console.WriteLine(str);
}
Variabele bereik methodeniveau
Wanneer we een variabele binnen een methode declareren, is de variabele niet toegankelijk buiten de methode. Dit staat bekend als variabel bereik op methodeniveau . Bijvoorbeeld,
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();
}
}
}
In het bovenstaande voorbeeld hebben we een variabele gemaakt met de naam str binnen method1()
.
// Inside method1()
string str = "method level";
Hier, str is een variabele op methodeniveau. Het is dus niet toegankelijk buiten method1()
.
Wanneer we echter proberen toegang te krijgen tot de str
variabele uit de method2()
// Inside method2
Console.WriteLine(str); // Error code
we krijgen een foutmelding.
Error CS0103 The name 'str' does not exist in the current context
Dit komt omdat variabelen op methodeniveau een bereik hebben binnen de methode waarin ze zijn gemaakt. Bijvoorbeeld,
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();
}
}
}
Uitvoer
inside method
Hier hebben we de str . gemaakt variabele en heb er toegang toe met dezelfde methode display()
. Daarom wordt de code uitgevoerd zonder enige fout.
Blokniveau variabel bereik in C#
Wanneer we een variabele binnen een blok declareren (for loop, while loop, if..else), is de variabele alleen toegankelijk binnen het blok. Dit staat bekend als variabel bereik op blokniveau . Bijvoorbeeld,
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();
}
}
}
In het bovenstaande programma hebben we een variabele op blokniveau i
. geïnitialiseerd binnen de for
lus.
for(int i=0;i<=3;i++) {
}
Sinds ik is een variabele op blokniveau, wanneer we proberen toegang te krijgen tot de variabele buiten de for lus,
// Outside for loop
Console.WriteLine(i);
we krijgen een foutmelding.
Error CS0103 The name 'i' does not exist in the current context
C Taal