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
1234567891011121314151617181920using 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
123456789101112131415161718192021222324252627282930313233using 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ääriteltyif-lohkon sisällä;variable_4– paikallinen näkyvyysalue, määriteltymyMethod-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_1on globaali muuttuja, joten se on käytettävissä lähes kaikkialla;variable_2on käytettävissä kokoMain-metodin ajan, mukaan lukien alilohkot kutenif-ehto;variable_3on käytettävissä vainif-lohkon sisällä;variable_4on käytettävissä vainmyMethod-lohkon sisällä.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme