Ćwiczenie — omówienie zakresu metody
for pętle, if-else instrukcje i metody reprezentują różne typy bloków kodu. Każdy blok kodu ma własny "zakres". "Zakres" to region programu, w którym są dostępne pewne dane. Zmienne zadeklarowane wewnątrz metody lub dowolnego bloku kodu są dostępne tylko w tym regionie. W miarę jak programy stają się bardziej skomplikowane, ten wzorzec pomaga programistom konsekwentnie używać jasno nazwanych zmiennych i utrzymywać łatwy do odczytania kod.
W tym ćwiczeniu dowiesz się więcej o zakresie metody, pracując z różnymi typami metod i zmiennych.
Zakres zmiennej testowej
Instrukcje zadeklarowane poza dowolnym blokiem kodu są nazywane instrukcjami najwyższego poziomu. Zmienne zadeklarowane w instrukcjach najwyższego poziomu są nazywane "zmiennymi globalnymi". Zmienne globalne nie są ograniczone do żadnego zakresu i mogą być używane w dowolnym miejscu w całym programie. Zmienne globalne mogą być przydatne w przypadku różnych metod, które muszą uzyskiwać dostęp do tych samych danych. Ważne jest jednak, aby zwrócić uwagę na nazwy zmiennych w różnych zakresach.
W edytorze programu Visual Studio Code usuń dowolny istniejący kod z poprzednich ćwiczeń.
Wprowadź następujący kod w edytorze programu Visual Studio Code:
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(); }W tym kodzie utworzysz tablicę globalną
studentsi metodęDisplayStudents, która akceptuje parametr o tej samej nazwie.Zapisz i uruchom kod, aby obserwować następujące dane wyjściowe:
Jenna, Ayesha, Carlos, Viktor, Robert, Vanya,Zwróć uwagę, że parametr
studentmetody ma pierwszeństwo przed tablicą globalnąstudent. Ważne jest, aby celowe było określenie, jakie zmienne globalne mają być używane przez metody.Usuń poprzedni kod.
Wprowadź następujący kod w edytorze:
PrintCircleArea(12); void PrintCircleArea(int radius) { double pi = 3.14159; double area = pi * (radius * radius); Console.WriteLine($"Area = {area}"); }Ten kod oblicza i wyświetla obszar okręgu.
Spróbuj odwołać się do zmiennych wewnątrz
PrintCircleAreametody, aktualizując kod w następujący sposób:PrintCircleArea(12); double circumference = 2 * pi * radius;Wyświetlane komunikaty o błędach informują o tym, że nazwy
piiradiusnie istnieją w bieżącym zakresie. Te zmienne istnieją tylko wPrintCircleAreazakresie metody.Usuń nieprawidłowy kod i dodaj następujący kod:
void PrintCircleCircumference(int radius) { double pi = 3.14159; double circumference = 2 * pi * radius; Console.WriteLine($"Circumference = {circumference}"); }Ponieważ zmienna
pijest ustawiona na tę samą stałą wartość i jest używana w obu metodach, ta wartość jest dobrym kandydatem dla zmiennej globalnej. W tym przykładzie nie jest zmienną globalną,radiusdzięki czemu można wywołać metody z różnymi wartościamiradiusbez aktualizowania zmiennej za każdym razem.Zaktualizuj swój kod do następującej wersji.
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}"); }Teraz obie metody mogą odwoływać się do tej samej wartości
pibez konieczności jej definiowania. Być może już odgadłeś, że metody mogą wywoływać inne metody. Ogólnie rzecz biorąc, o ile metoda jest zdefiniowana w zakresie programu, może być wywoływana w dowolnym miejscu.Dodaj nową metodę do kodu w następujący sposób:
double pi = 3.14159; PrintCircleInfo(12); PrintCircleInfo(24); void PrintCircleInfo(int radius) { Console.WriteLine($"Circle with radius {radius}"); PrintCircleArea(radius); PrintCircleCircumference(radius); }W tym kodzie utworzysz nową metodę
PrintCircleInfow celu wywołania istniejących metod. Wartość parametruradiusjest również przekazywana do każdej metody. Tworzenie metod modularyzowanych może pomóc w sposobie organizowania i łatwego odczytywania kodu.Zapisz i uruchom kod, aby obserwować następujące dane wyjściowe:
Circle with radius 12 Area = 452.38896 Circumference = 75.39815999999999 Circle with radius 24 Area = 1809.55584 Circumference = 150.79631999999998
Podsumowanie
Oto, czego nauczyłeś się o zakresie metod do tej pory:
- Zmienne zadeklarowane wewnątrz metody są dostępne tylko dla tej metody.
- Zmienne zadeklarowane w instrukcjach najwyższego poziomu są dostępne w całym programie.
- Metody nie mają dostępu do zmiennych zdefiniowanych w różnych metodach.
- Metody mogą wywoływać inne metody.