Lokale en Globale Scopes
De scope van een variabele is het gedeelte van de code waarin we toegang hebben tot die variabele. In C# is er een globale scope en zijn er veel mogelijke lokale scopes.
Wanneer we een variabele buiten een methode aanmaken, kan deze vanuit vrijwel overal in het programma worden benaderd. Daarom zeggen we dat deze een globale scope heeft:
main.cs
1234567891011121314151617181920using System; namespace ConsoleApp { internal class Program { static int myVariable = 10; // Variable with a Global Scope static void testMethod() { // Accessing `myVariable` inside `testMethod` Console.WriteLine($"testMethod: {myVariable}"); } static void Main(string[] args) { // Accessing `myVariable` inside `Main` method Console.WriteLine($"Main Function: {myVariable}"); testMethod(); } } }
Opmerking
Wanneer je een variabele buiten een methode declareert, is het belangrijk om het sleutelwoord
staticvóór de declaratie te plaatsen.
In het bovenstaande voorbeeld hebben we toegang tot de variabele myVariable in zowel de Main-methode als de testMethod. Dit is echter niet altijd mogelijk.
Een variabele die binnen een codeblok wordt gedeclareerd, is alleen toegankelijk binnen dat blok en eventuele sub-codeblokken die het bevat. Een variabele die bijvoorbeeld binnen een methode wordt gedeclareerd, is alleen direct toegankelijk binnen die methode. Op dezelfde manier is een variabele die binnen een if-, else if- of else-blok wordt gedeclareerd, alleen toegankelijk binnen dat blok. Zo'n variabele heeft een lokale scope.
Neem even de tijd om de volgende code te bekijken en probeer te begrijpen hoe deze werkt:
main.cs
123456789101112131415161718192021222324252627282930313233using System; namespace ConsoleApp { class Program { static int variable_1 = 1; static void Main(string[] args) { int variable_2 = 2; if (true) { int variable_3 = 3; Console.WriteLine(variable_1); Console.WriteLine(variable_2); Console.WriteLine(variable_3); } Console.WriteLine(variable_1); Console.WriteLine(variable_2); Console.WriteLine(variable_3); // ERROR HERE Console.WriteLine(variable_4); // ERROR HERE // Note: A variable cannot be used before it's defined in the code } static void myMethod() { int variable_4 = 4; Console.WriteLine(variable_1); Console.WriteLine(variable_2); // ERROR HERE Console.WriteLine(variable_3); // ERROR HERE Console.WriteLine(variable_4); } } }
In de bovenstaande code zijn er vier variabelen:
variable_1- globale scope;variable_2- lokale scope, gedefinieerd in de Main-methode;variable_3- lokale scope, gedefinieerd in hetif-blok;variable_4- lokale scope, gedefinieerd in demyMethod-methode.
Het bovenstaande programma zal mogelijk niet compileren, maar toont aan waar bepaalde variabelen toegankelijk zijn en waar niet. Het gebied van de code waar een variabele toegankelijk is, wordt het scope van die variabele genoemd.
variable_1is een globale variabele en is dus bijna overal toegankelijk;variable_2is toegankelijk binnen de geheleMain-methode, inclusief subblokken zoals deif-voorwaarde;variable_3is alleen toegankelijk binnen hetif-blok;variable_4is alleen toegankelijk binnen hetmyMethod-blok.
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Can you explain the difference between global and local scope in more detail?
Can you give an example of when to use a global variable versus a local variable?
What happens if I try to access a variable outside of its scope?
Awesome!
Completion rate improved to 1.59
Lokale en Globale Scopes
Veeg om het menu te tonen
De scope van een variabele is het gedeelte van de code waarin we toegang hebben tot die variabele. In C# is er een globale scope en zijn er veel mogelijke lokale scopes.
Wanneer we een variabele buiten een methode aanmaken, kan deze vanuit vrijwel overal in het programma worden benaderd. Daarom zeggen we dat deze een globale scope heeft:
main.cs
1234567891011121314151617181920using System; namespace ConsoleApp { internal class Program { static int myVariable = 10; // Variable with a Global Scope static void testMethod() { // Accessing `myVariable` inside `testMethod` Console.WriteLine($"testMethod: {myVariable}"); } static void Main(string[] args) { // Accessing `myVariable` inside `Main` method Console.WriteLine($"Main Function: {myVariable}"); testMethod(); } } }
Opmerking
Wanneer je een variabele buiten een methode declareert, is het belangrijk om het sleutelwoord
staticvóór de declaratie te plaatsen.
In het bovenstaande voorbeeld hebben we toegang tot de variabele myVariable in zowel de Main-methode als de testMethod. Dit is echter niet altijd mogelijk.
Een variabele die binnen een codeblok wordt gedeclareerd, is alleen toegankelijk binnen dat blok en eventuele sub-codeblokken die het bevat. Een variabele die bijvoorbeeld binnen een methode wordt gedeclareerd, is alleen direct toegankelijk binnen die methode. Op dezelfde manier is een variabele die binnen een if-, else if- of else-blok wordt gedeclareerd, alleen toegankelijk binnen dat blok. Zo'n variabele heeft een lokale scope.
Neem even de tijd om de volgende code te bekijken en probeer te begrijpen hoe deze werkt:
main.cs
123456789101112131415161718192021222324252627282930313233using System; namespace ConsoleApp { class Program { static int variable_1 = 1; static void Main(string[] args) { int variable_2 = 2; if (true) { int variable_3 = 3; Console.WriteLine(variable_1); Console.WriteLine(variable_2); Console.WriteLine(variable_3); } Console.WriteLine(variable_1); Console.WriteLine(variable_2); Console.WriteLine(variable_3); // ERROR HERE Console.WriteLine(variable_4); // ERROR HERE // Note: A variable cannot be used before it's defined in the code } static void myMethod() { int variable_4 = 4; Console.WriteLine(variable_1); Console.WriteLine(variable_2); // ERROR HERE Console.WriteLine(variable_3); // ERROR HERE Console.WriteLine(variable_4); } } }
In de bovenstaande code zijn er vier variabelen:
variable_1- globale scope;variable_2- lokale scope, gedefinieerd in de Main-methode;variable_3- lokale scope, gedefinieerd in hetif-blok;variable_4- lokale scope, gedefinieerd in demyMethod-methode.
Het bovenstaande programma zal mogelijk niet compileren, maar toont aan waar bepaalde variabelen toegankelijk zijn en waar niet. Het gebied van de code waar een variabele toegankelijk is, wordt het scope van die variabele genoemd.
variable_1is een globale variabele en is dus bijna overal toegankelijk;variable_2is toegankelijk binnen de geheleMain-methode, inclusief subblokken zoals deif-voorwaarde;variable_3is alleen toegankelijk binnen hetif-blok;variable_4is alleen toegankelijk binnen hetmyMethod-blok.
Bedankt voor je feedback!