Paikalliset 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
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 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
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 alue;variable_2– paikallinen alue, määritelty Main-metodissa;variable_3– paikallinen alue, määriteltyif-lohkossa;variable_4– paikallinen alue, 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 alueeksi (scope).
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-lohkossa;variable_4on käytettävissä vainmyMethod-lohkossa.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Awesome!
Completion rate improved to 1.59
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 ohjelman osasta, 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 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
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 alue;variable_2– paikallinen alue, määritelty Main-metodissa;variable_3– paikallinen alue, määriteltyif-lohkossa;variable_4– paikallinen alue, 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 alueeksi (scope).
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-lohkossa;variable_4on käytettävissä vainmyMethod-lohkossa.
Kiitos palautteestasi!