Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Lokala och Globala Omfång | Metoder
C#-Grunder

bookLokala 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

main.cs

copy
1234567891011121314151617181920
using 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 static fö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

main.cs

copy
123456789101112131415161718192021222324252627282930313233
using 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 i if-blocket;
  • variable_4 - lokalt omfång, definierad i metoden myMethod.

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 hela Main-metoden, inklusive underblock som if-villkoret;
  • variable_3 är endast tillgänglig inuti if-blocket;
  • variable_4 är endast tillgänglig inuti myMethod-blocket.
question mark

Vilket nyckelord behöver vi använda för globala variabler (variabler deklarerade utanför någon metod)?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 6. Kapitel 8

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Suggested prompts:

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

bookLokala 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

main.cs

copy
1234567891011121314151617181920
using 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 static fö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

main.cs

copy
123456789101112131415161718192021222324252627282930313233
using 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 i if-blocket;
  • variable_4 - lokalt omfång, definierad i metoden myMethod.

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 hela Main-metoden, inklusive underblock som if-villkoret;
  • variable_3 är endast tillgänglig inuti if-blocket;
  • variable_4 är endast tillgänglig inuti myMethod-blocket.
question mark

Vilket nyckelord behöver vi använda för globala variabler (variabler deklarerade utanför någon metod)?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 6. Kapitel 8
some-alt