Lokale og Globale Omfang
Omfanget til en variabel er den delen av koden hvor vi kan få tilgang til den variabelen. I C# finnes det et globalt omfang og mange mulige lokale omfang.
Når vi oppretter en variabel utenfor enhver metode, kan den nås fra nesten hvor som helst i programmet, derfor sies 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(); } } }
Merk
Når du erklærer en variabel utenfor enhver metode, er det viktig å inkludere
static-nøkkelordet før deklarasjonen.
I eksemplet ovenfor fikk vi tilgang til variabelen myVariable både i Main-metoden og i testMethod. Dette er imidlertid ikke alltid mulig.
En variabel som erklæres innenfor en kodeblokk er kun tilgjengelig innenfor den blokken og eventuelle underkodeblokker den inneholder. For eksempel er en variabel som erklæres inne i en metode kun direkte tilgjengelig i den metoden. På samme måte er en variabel som erklæres inne i en if, else if eller else-blokk kun tilgjengelig i den blokken. En slik variabel sies å ha et lokalt omfang.
Ta et øyeblikk til å gjennomgå følgende kode og prøv å 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 koden ovenfor er det fire variabler:
variable_1– globalt omfang;variable_2– lokalt omfang, definert i Main-metoden;variable_3– lokalt omfang, definert iif-blokken;variable_4– lokalt omfang, definert imyMethod-metoden.
Programmet ovenfor kompilerer kanskje ikke i det hele tatt, men demonstrerer hvor visse variabler kan nås og hvor de ikke kan nås. Området i koden hvor en variabel kan nås kalles omfanget til den variabelen.
variable_1er en global variabel og er derfor tilgjengelig nesten overalt;variable_2er tilgjengelig gjennom heleMain-metoden, inkludert underblokker somif-betingelsen;variable_3er kun tilgjengelig inne iif-blokken;variable_4er kun tilgjengelig inne imyMethod-blokken.
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Awesome!
Completion rate improved to 1.59
Lokale og Globale Omfang
Sveip for å vise menyen
Omfanget til en variabel er den delen av koden hvor vi kan få tilgang til den variabelen. I C# finnes det et globalt omfang og mange mulige lokale omfang.
Når vi oppretter en variabel utenfor enhver metode, kan den nås fra nesten hvor som helst i programmet, derfor sies 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(); } } }
Merk
Når du erklærer en variabel utenfor enhver metode, er det viktig å inkludere
static-nøkkelordet før deklarasjonen.
I eksemplet ovenfor fikk vi tilgang til variabelen myVariable både i Main-metoden og i testMethod. Dette er imidlertid ikke alltid mulig.
En variabel som erklæres innenfor en kodeblokk er kun tilgjengelig innenfor den blokken og eventuelle underkodeblokker den inneholder. For eksempel er en variabel som erklæres inne i en metode kun direkte tilgjengelig i den metoden. På samme måte er en variabel som erklæres inne i en if, else if eller else-blokk kun tilgjengelig i den blokken. En slik variabel sies å ha et lokalt omfang.
Ta et øyeblikk til å gjennomgå følgende kode og prøv å 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 koden ovenfor er det fire variabler:
variable_1– globalt omfang;variable_2– lokalt omfang, definert i Main-metoden;variable_3– lokalt omfang, definert iif-blokken;variable_4– lokalt omfang, definert imyMethod-metoden.
Programmet ovenfor kompilerer kanskje ikke i det hele tatt, men demonstrerer hvor visse variabler kan nås og hvor de ikke kan nås. Området i koden hvor en variabel kan nås kalles omfanget til den variabelen.
variable_1er en global variabel og er derfor tilgjengelig nesten overalt;variable_2er tilgjengelig gjennom heleMain-metoden, inkludert underblokker somif-betingelsen;variable_3er kun tilgjengelig inne iif-blokken;variable_4er kun tilgjengelig inne imyMethod-blokken.
Takk for tilbakemeldingene dine!