Lokala och Globala Omfång
Omfånget för en variabel är den del av koden där vi kan komma åt den variabeln. I C# finns det ett globalt omfång och många möjliga lokala omfång.
När vi skapar en variabel utanför någon metod kan den nås från nästan var som helst i programmet, därför sägs den ha globalt omfång:
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(); } } }
Obs
När du deklarerar en variabel utanför någon metod är det viktigt att inkludera nyckelordet
staticföre dess deklaration.
I exemplet ovan kom vi åt variabeln myVariable både i metoden Main och i testMethod. Detta är dock inte alltid möjligt.
En variabel som deklareras inom ett kodblock är endast tillgänglig inom det blocket och eventuella underkodblock det innehåller. Till exempel är en variabel som deklareras inuti en metod endast direkt tillgänglig inom den metoden. På samma sätt är en variabel som deklareras inuti ett if-, else if- eller else-block endast tillgänglig inom det blocket. En sådan variabel sägs ha ett lokalt omfång.
Ta en stund och granska följande kod och försök förstå hur den fungerar:
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 ovan finns det fyra variabler:
variable_1- globalt omfång;variable_2- lokalt omfång, definierad i Main-metoden;variable_3- lokalt omfång, definierad iif-blocket;variable_4- lokalt omfång, definierad i metodenmyMethod.
Programmet ovan kanske inte kompilerar alls men demonstrerar var vissa variabler kan nås och var de inte kan det. Det område i koden där en variabel kan nås kallas variabelns omfång.
variable_1är en global variabel och är därför tillgänglig nästan överallt;variable_2är tillgänglig genom helaMain-metoden, inklusive underblock somif-villkoret;variable_3är endast tillgänglig inutiif-blocket;variable_4är endast tillgänglig inutimyMethod-blocket.
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
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
Lokala och Globala Omfång
Svep för att visa menyn
Omfånget för en variabel är den del av koden där vi kan komma åt den variabeln. I C# finns det ett globalt omfång och många möjliga lokala omfång.
När vi skapar en variabel utanför någon metod kan den nås från nästan var som helst i programmet, därför sägs den ha globalt omfång:
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(); } } }
Obs
När du deklarerar en variabel utanför någon metod är det viktigt att inkludera nyckelordet
staticföre dess deklaration.
I exemplet ovan kom vi åt variabeln myVariable både i metoden Main och i testMethod. Detta är dock inte alltid möjligt.
En variabel som deklareras inom ett kodblock är endast tillgänglig inom det blocket och eventuella underkodblock det innehåller. Till exempel är en variabel som deklareras inuti en metod endast direkt tillgänglig inom den metoden. På samma sätt är en variabel som deklareras inuti ett if-, else if- eller else-block endast tillgänglig inom det blocket. En sådan variabel sägs ha ett lokalt omfång.
Ta en stund och granska följande kod och försök förstå hur den fungerar:
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 ovan finns det fyra variabler:
variable_1- globalt omfång;variable_2- lokalt omfång, definierad i Main-metoden;variable_3- lokalt omfång, definierad iif-blocket;variable_4- lokalt omfång, definierad i metodenmyMethod.
Programmet ovan kanske inte kompilerar alls men demonstrerar var vissa variabler kan nås och var de inte kan det. Det område i koden där en variabel kan nås kallas variabelns omfång.
variable_1är en global variabel och är därför tillgänglig nästan överallt;variable_2är tillgänglig genom helaMain-metoden, inklusive underblock somif-villkoret;variable_3är endast tillgänglig inutiif-blocket;variable_4är endast tillgänglig inutimyMethod-blocket.
Tack för dina kommentarer!