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

Paikalliset 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

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ä muuttujaan myVariable viitattiin 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 alikoodilohkoissa. 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 on paikallinen näkyvyysalue.

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

main.cs

main.cs

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 näkyvyysalue;
  • variable_2 – paikallinen näkyvyysalue, määritelty Main-metodissa;
  • variable_3 – paikallinen näkyvyysalue, määritelty if-lohkon sisällä;
  • variable_4 – paikallinen näkyvyysalue, 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 näkyvyysalueeksi.

  • 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)?

Valitse oikea vastaus

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 58

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

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

Osio 1. Luku 58
some-alt