Lokale og Globale Scopes
Omfanget af en variabel er den del af koden, hvor vi kan få adgang til den pågældende variabel. I C# findes der et globalt omfang og mange mulige lokale omfang.
Når vi opretter en variabel uden for en metode, kan den tilgås fra næsten alle steder i programmet, og derfor siges det, at den har globalt omfang:
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(); } } }
Bemærk
Når du erklærer en variabel uden for en metode, er det vigtigt at inkludere nøgleordet
staticfør dens erklæring.
I eksemplet ovenfor tilgik vi variablen myVariable både i Main-metoden og i testMethod. Dette er dog ikke altid muligt.
En variabel, der erklæres inden for et kodeblok, er kun tilgængelig inden for denne blok og eventuelle underkodeblokke den indeholder. For eksempel er en variabel, der erklæres inde i en metode, kun direkte tilgængelig inden for den metode. Tilsvarende er en variabel, der erklæres i en if, else if eller else blok, kun tilgængelig inden for den pågældende blok. En sådan variabel siges at have et lokalt omfang.
Tag et øjeblik til at gennemgå følgende kode og prøv at forstå, hvordan den fungerer:
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); } } }
I ovenstående kode er der fire variabler:
variable_1- globalt scope;variable_2- lokalt scope, defineret i Main-metoden;variable_3- lokalt scope, defineret iif-blokken;variable_4- lokalt scope, defineret imyMethod-metoden.
Ovenstående program kompilerer muligvis ikke, men demonstrerer hvor bestemte variabler kan tilgås og hvor de ikke kan. Det område af koden, hvor en variabel kan tilgås, kaldes variablens scope.
variable_1er en global variabel og kan derfor tilgås næsten overalt;variable_2kan tilgås i heleMain-metoden, inklusive underblokke somif-betingelsen;variable_3kan kun tilgås inden forif-blokken;variable_4kan kun tilgås inden formyMethod-blokken.
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Awesome!
Completion rate improved to 1.59
Lokale og Globale Scopes
Stryg for at vise menuen
Omfanget af en variabel er den del af koden, hvor vi kan få adgang til den pågældende variabel. I C# findes der et globalt omfang og mange mulige lokale omfang.
Når vi opretter en variabel uden for en metode, kan den tilgås fra næsten alle steder i programmet, og derfor siges det, at den har globalt omfang:
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(); } } }
Bemærk
Når du erklærer en variabel uden for en metode, er det vigtigt at inkludere nøgleordet
staticfør dens erklæring.
I eksemplet ovenfor tilgik vi variablen myVariable både i Main-metoden og i testMethod. Dette er dog ikke altid muligt.
En variabel, der erklæres inden for et kodeblok, er kun tilgængelig inden for denne blok og eventuelle underkodeblokke den indeholder. For eksempel er en variabel, der erklæres inde i en metode, kun direkte tilgængelig inden for den metode. Tilsvarende er en variabel, der erklæres i en if, else if eller else blok, kun tilgængelig inden for den pågældende blok. En sådan variabel siges at have et lokalt omfang.
Tag et øjeblik til at gennemgå følgende kode og prøv at forstå, hvordan den fungerer:
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); } } }
I ovenstående kode er der fire variabler:
variable_1- globalt scope;variable_2- lokalt scope, defineret i Main-metoden;variable_3- lokalt scope, defineret iif-blokken;variable_4- lokalt scope, defineret imyMethod-metoden.
Ovenstående program kompilerer muligvis ikke, men demonstrerer hvor bestemte variabler kan tilgås og hvor de ikke kan. Det område af koden, hvor en variabel kan tilgås, kaldes variablens scope.
variable_1er en global variabel og kan derfor tilgås næsten overalt;variable_2kan tilgås i heleMain-metoden, inklusive underblokke somif-betingelsen;variable_3kan kun tilgås inden forif-blokken;variable_4kan kun tilgås inden formyMethod-blokken.
Tak for dine kommentarer!