Cvičení – vysvětlení rozsahu metody
for smyčky, if-else příkazy a metody představují různé typy bloků kódu. Každý blok kódu má svůj vlastní obor. Obor je oblast programu, kde jsou určitá data přístupná. Proměnné deklarované uvnitř metody nebo jakéhokoli bloku kódu jsou přístupné pouze v rámci této oblasti. S tím, jak jsou programy složitější, tento model pomáhá programátorům konzistentně používat jasně pojmenované proměnné a udržovat snadno čitelný kód.
V tomto cvičení se dozvíte více o rozsahu metod tím, že budete pracovat s různými typy metod a proměnných.
Rozsah testovací proměnné
Příkazy deklarované mimo jakýkoli blok kódu se nazývají příkazy nejvyšší úrovně. Proměnné deklarované v příkazech nejvyšší úrovně se nazývají globální proměnné. Globální proměnné nejsou omezeny na žádný obor a lze je používat kdekoli v rámci programu. Globální proměnné můžou být užitečné pro různé metody, které potřebují přístup ke stejným datům. Je ale důležité věnovat pozornost názvům proměnných v různých oborech.
V editoru Visual Studio Code odstraňte veškerý existující kód z předchozích cvičení.
Do editoru visual studio Code zadejte následující kód:
string[] students = {"Jenna", "Ayesha", "Carlos", "Viktor"}; DisplayStudents(students); DisplayStudents(new string[] {"Robert","Vanya"}); void DisplayStudents(string[] students) { foreach (string student in students) { Console.Write($"{student}, "); } Console.WriteLine(); }V tomto kódu vytvoříte globální
studentspole a metoduDisplayStudents, která přijímá parametr se stejným názvem.Uložte a spusťte kód, abyste mohli sledovat následující výstup:
Jenna, Ayesha, Carlos, Viktor, Robert, Vanya,Všimněte si, že parametr
studentmetody má přednost před globálnímstudentpolem. Je důležité se zamyslet nad tím, jaké globální proměnné chcete použít.Odstraňte předchozí kód.
Do editoru zadejte následující kód:
PrintCircleArea(12); void PrintCircleArea(int radius) { double pi = 3.14159; double area = pi * (radius * radius); Console.WriteLine($"Area = {area}"); }Tento kód vypočítá a zobrazí oblast kruhu.
Pokuste se odkazovat na proměnné uvnitř
PrintCircleAreametody tak, že aktualizujete svůj kód následujícím způsobem:PrintCircleArea(12); double circumference = 2 * pi * radius;Zobrazí se chybové zprávy, které vás informují o tom, že názvy
piaradiusneexistují v aktuálním oboru. Tyto proměnné existují pouze vPrintCircleArearámci oboru metody.Odstraňte nesprávný kód a přidejte následující kód:
void PrintCircleCircumference(int radius) { double pi = 3.14159; double circumference = 2 * pi * radius; Console.WriteLine($"Circumference = {circumference}"); }Vzhledem k tomu, že proměnná
pije nastavená na stejnou pevnou hodnotu a používá se v obou metodách, je tato hodnota vhodným kandidátem pro globální proměnnou. V tomto příkladu není globální proměnná,radiustakže můžete volat metody s různými hodnotamiradiusbez aktualizace proměnné pokaždé.Aktualizujte kód následujícím kódem:
double pi = 3.14159; void PrintCircleArea(int radius) { double area = pi * (radius * radius); Console.WriteLine($"Area = {area}"); } void PrintCircleCircumference(int radius) { double circumference = 2 * pi * radius; Console.WriteLine($"Circumference = {circumference}"); }Obě metody teď můžou odkazovat na stejnou hodnotu
pi, aniž by ji museli definovat. Možná jste už uhodli, že metody můžou volat jiné metody. Obecně platí, že pokud je metoda definována v rámci vašeho programu, lze ji volat kdekoli.Přidejte do kódu novou metodu následujícím způsobem:
double pi = 3.14159; PrintCircleInfo(12); PrintCircleInfo(24); void PrintCircleInfo(int radius) { Console.WriteLine($"Circle with radius {radius}"); PrintCircleArea(radius); PrintCircleCircumference(radius); }V tomto kódu vytvoříte novou metodu
PrintCircleInfopro volání existujících metod. Hodnotaradiusje také předána do každé metody. Vytváření modularizovaných metod vám pomůže udržet kód uspořádaný a snadno čitelný.Uložte a spusťte kód, abyste mohli sledovat následující výstup:
Circle with radius 12 Area = 452.38896 Circumference = 75.39815999999999 Circle with radius 24 Area = 1809.55584 Circumference = 150.79631999999998
Rekapitulace
Tady je, co jste se zatím dozvěděli o rozsahu metody:
- Proměnné deklarované uvnitř metody jsou přístupné pouze pro tuto metodu.
- Proměnné deklarované v příkazech nejvyšší úrovně jsou přístupné v celém programu.
- Metody nemají přístup k proměnným definovaným v různých metodách.
- Metody mohou volat jiné metody.