Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Lokale og Globale Scopes | Metoder
C# Grundlæggende

bookLokale 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

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(); } } }

Bemærk

Når du erklærer en variabel uden for en metode, er det vigtigt at inkludere nøgleordet static fø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

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 ovenstående kode er der fire variabler:

  • variable_1 - globalt scope;
  • variable_2 - lokalt scope, defineret i Main-metoden;
  • variable_3 - lokalt scope, defineret i if-blokken;
  • variable_4 - lokalt scope, defineret i myMethod-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_1 er en global variabel og kan derfor tilgås næsten overalt;
  • variable_2 kan tilgås i hele Main-metoden, inklusive underblokke som if-betingelsen;
  • variable_3 kan kun tilgås inden for if-blokken;
  • variable_4 kan kun tilgås inden for myMethod-blokken.
question mark

Hvilket nøgleord skal vi bruge til globale variabler (variabler erklæret uden for enhver metode)?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 6. Kapitel 8

Spørg AI

expand

Spørg AI

ChatGPT

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

bookLokale 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

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(); } } }

Bemærk

Når du erklærer en variabel uden for en metode, er det vigtigt at inkludere nøgleordet static fø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

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 ovenstående kode er der fire variabler:

  • variable_1 - globalt scope;
  • variable_2 - lokalt scope, defineret i Main-metoden;
  • variable_3 - lokalt scope, defineret i if-blokken;
  • variable_4 - lokalt scope, defineret i myMethod-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_1 er en global variabel og kan derfor tilgås næsten overalt;
  • variable_2 kan tilgås i hele Main-metoden, inklusive underblokke som if-betingelsen;
  • variable_3 kan kun tilgås inden for if-blokken;
  • variable_4 kan kun tilgås inden for myMethod-blokken.
question mark

Hvilket nøgleord skal vi bruge til globale variabler (variabler erklæret uden for enhver metode)?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 6. Kapitel 8
some-alt