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 ohjelman osasta, 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 ulkopuolella, 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ä ainoastaan kyseisessä lohkossa ja sen alilohkoissa. Esimerkiksi metodin sisällä määriteltyyn muuttujaan voidaan viitata vain kyseisessä metodissa. Samoin if-, else if- tai else-lohkon sisällä määriteltyyn muuttujaan voidaan viitata 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-lohkossa;
  • variable_4 – paikallinen alue, määritelty myMethod-metodissa.

Ohjelma ei välttämättä käänny lainkaan, mutta se havainnollistaa, missä tietyt muuttujat ovat käytettävissä ja missä eivät. Koodin aluetta, jossa muuttujaan pääsee käsiksi, 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-lohkossa;
  • variable_4 on käytettävissä vain myMethod-lohkossa.
question mark

Mitä avainsanaa tulee käyttää globaaleille muuttujille (muuttujat, jotka on määritelty 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

Awesome!

Completion rate improved to 1.59

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 ohjelman osasta, 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 ulkopuolella, 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ä ainoastaan kyseisessä lohkossa ja sen alilohkoissa. Esimerkiksi metodin sisällä määriteltyyn muuttujaan voidaan viitata vain kyseisessä metodissa. Samoin if-, else if- tai else-lohkon sisällä määriteltyyn muuttujaan voidaan viitata 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-lohkossa;
  • variable_4 – paikallinen alue, määritelty myMethod-metodissa.

Ohjelma ei välttämättä käänny lainkaan, mutta se havainnollistaa, missä tietyt muuttujat ovat käytettävissä ja missä eivät. Koodin aluetta, jossa muuttujaan pääsee käsiksi, 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-lohkossa;
  • variable_4 on käytettävissä vain myMethod-lohkossa.
question mark

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

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 6. Luku 8
some-alt