Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Paikalliset ja globaalit laajuudet | Metodit
C# Perusteet

bookPaikalliset ja globaalit laajuudet

Muuttujan näkyvyysalue tarkoittaa sitä osaa koodista, jossa muuttujaan voidaan viitata. C#:ssa on olemassa globaali näkyvyysalue sekä useita mahdollisia paikallisia näkyvyysalueita.

Kun muuttuja luodaan minkä tahansa metodin ulkopuolelle, siihen voidaan viitata lähes mistä tahansa ohjelmassa, joten sanotaan, että sillä on globaali näkyvyysalue:

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

Huomio

Kun määrittelet muuttujan minkä tahansa metodin ulkopuolelle, on tärkeää lisätä static-avainsana ennen sen määrittelyä.

Yllä olevassa esimerkissä käytettiin muuttujaa myVariable sekä Main-metodissa että testMethod-metodissa. Tämä ei kuitenkaan ole aina mahdollista.

Muuttuja, joka on määritelty koodilohkon sisällä, on käytettävissä vain kyseisessä lohkossa ja sen mahdollisissa alikoodilohkoissa. Esimerkiksi metodin sisällä määritelty muuttuja on suoraan käytettävissä vain kyseisessä metodissa. Samoin if-, else if- tai else-lohkon sisällä määritelty muuttuja on käytettävissä vain kyseisessä lohkossa. Tällaisella muuttujalla sanotaan olevan paikallinen näkyvyysalue.

Tutustu seuraavaan koodiin ja pyri ymmärtämään, miten se toimii:

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

Yllä olevassa koodissa on neljä muuttujaa:

  • variable_1 – globaali alue;
  • variable_2 – paikallinen alue, määritelty Main-metodissa;
  • variable_3 – paikallinen alue, määritelty if-lohkon sisällä;
  • variable_4 – paikallinen alue, määritelty myMethod-metodissa.

Yllä oleva ohjelma ei välttämättä käänny lainkaan, mutta havainnollistaa, missä tietyt muuttujat ovat käytettävissä ja missä eivät. Koodin aluetta, jossa muuttuja on käytettävissä, kutsutaan muuttujan alueeksi (scope).

  • variable_1 on globaali muuttuja, joten se on käytettävissä lähes kaikkialla;
  • variable_2 on käytettävissä koko Main-metodin ajan, mukaan lukien alilohkot kuten if-ehto;
  • variable_3 on käytettävissä vain if-lohkon sisällä;
  • variable_4 on käytettävissä vain myMethod-lohkon sisällä.
question mark

Mitä avainsanaa tulee käyttää globaaleille muuttujille (muuttujat, jotka määritellään metodien ulkopuolella)?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 6. Luku 8

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

bookPaikalliset ja globaalit laajuudet

Pyyhkäise näyttääksesi valikon

Muuttujan näkyvyysalue tarkoittaa sitä osaa koodista, jossa muuttujaan voidaan viitata. C#:ssa on olemassa globaali näkyvyysalue sekä useita mahdollisia paikallisia näkyvyysalueita.

Kun muuttuja luodaan minkä tahansa metodin ulkopuolelle, siihen voidaan viitata lähes mistä tahansa ohjelmassa, joten sanotaan, että sillä on globaali näkyvyysalue:

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

Huomio

Kun määrittelet muuttujan minkä tahansa metodin ulkopuolelle, on tärkeää lisätä static-avainsana ennen sen määrittelyä.

Yllä olevassa esimerkissä käytettiin muuttujaa myVariable sekä Main-metodissa että testMethod-metodissa. Tämä ei kuitenkaan ole aina mahdollista.

Muuttuja, joka on määritelty koodilohkon sisällä, on käytettävissä vain kyseisessä lohkossa ja sen mahdollisissa alikoodilohkoissa. Esimerkiksi metodin sisällä määritelty muuttuja on suoraan käytettävissä vain kyseisessä metodissa. Samoin if-, else if- tai else-lohkon sisällä määritelty muuttuja on käytettävissä vain kyseisessä lohkossa. Tällaisella muuttujalla sanotaan olevan paikallinen näkyvyysalue.

Tutustu seuraavaan koodiin ja pyri ymmärtämään, miten se toimii:

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

Yllä olevassa koodissa on neljä muuttujaa:

  • variable_1 – globaali alue;
  • variable_2 – paikallinen alue, määritelty Main-metodissa;
  • variable_3 – paikallinen alue, määritelty if-lohkon sisällä;
  • variable_4 – paikallinen alue, määritelty myMethod-metodissa.

Yllä oleva ohjelma ei välttämättä käänny lainkaan, mutta havainnollistaa, missä tietyt muuttujat ovat käytettävissä ja missä eivät. Koodin aluetta, jossa muuttuja on käytettävissä, kutsutaan muuttujan alueeksi (scope).

  • variable_1 on globaali muuttuja, joten se on käytettävissä lähes kaikkialla;
  • variable_2 on käytettävissä koko Main-metodin ajan, mukaan lukien alilohkot kuten if-ehto;
  • variable_3 on käytettävissä vain if-lohkon sisällä;
  • variable_4 on käytettävissä vain myMethod-lohkon sisällä.
question mark

Mitä avainsanaa tulee käyttää globaaleille muuttujille (muuttujat, jotka määritellään metodien ulkopuolella)?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 6. Luku 8
some-alt