Упражнение. Общие сведения о области метода
for циклы, if-else операторы и методы представляют различные типы блоков кода. Каждый блок кода имеет собственную область действия. Область — это регион программы, в которой доступны определенные данные. Переменные, объявленные внутри метода или любого блока кода, доступны только в этом регионе. По мере того как программы становятся более сложными, этот шаблон помогает программистам постоянно использовать четко именованные переменные и поддерживать простое чтение кода.
В этом упражнении вы узнаете больше о области метода, работая с различными типами методов и переменными.
Область тестирования переменной
Операторы, объявленные вне любого блока кода, называются операторами верхнего уровня. Переменные, объявленные на верхнем уровне, называются глобальными переменными. Глобальные переменные не ограничиваются любой областью действия и могут использоваться в любом месте программы. Глобальные переменные могут быть полезны для различных методов, которым требуется доступ к тем же данным. Однако важно обратить внимание на имена переменных в разных областях.
В редакторе Visual Studio Code удалите существующий код из предыдущих упражнений.
Введите следующий код в редактор 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(); }В этом коде создается глобальный
studentsмассив и методDisplayStudents, принимаюющий параметр с тем же именем.Сохраните и запустите код, чтобы просмотреть следующие выходные данные:
Jenna, Ayesha, Carlos, Viktor, Robert, Vanya,Обратите внимание, что параметр
studentметода имеет приоритет над глобальнымstudentмассивом. Важно сознательно подходить к выбору глобальных переменных, которые вы хотите, чтобы ваши методы использовали.Удалите предыдущий код.
Введите следующий код в редактор:
PrintCircleArea(12); void PrintCircleArea(int radius) { double pi = 3.14159; double area = pi * (radius * radius); Console.WriteLine($"Area = {area}"); }Этот код вычисляет и отображает область круга.
Попытайтесь ссылаться на переменные внутри
PrintCircleAreaметода, обновив код следующим образом:PrintCircleArea(12); double circumference = 2 * pi * radius;Сообщения об ошибках отображаются, сообщая о том, что имена
piиradiusне существуют в текущей области. Эти переменные существуют только вPrintCircleAreaобласти метода.Удалите неправильный код и добавьте следующий код:
void PrintCircleCircumference(int radius) { double pi = 3.14159; double circumference = 2 * pi * radius; Console.WriteLine($"Circumference = {circumference}"); }Так как переменная
piимеет одинаковое фиксированное значение и используется в обоих методах, это значение является хорошим кандидатом для глобальной переменной. В этом примереradiusне является глобальной переменной, так что вы можете вызывать методы с различными значениямиradiusбез необходимости обновлять переменную каждый раз.Обновите код следующим образом:
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}"); }Теперь оба метода могут ссылаться на одно и то же значение
piбез необходимости определять его. Возможно, вы уже догадались, что один метод может вызывать другой. Как правило, если метод определен в рамках программы, его можно вызвать в любом месте.Добавьте новый метод в код следующим образом:
double pi = 3.14159; PrintCircleInfo(12); PrintCircleInfo(24); void PrintCircleInfo(int radius) { Console.WriteLine($"Circle with radius {radius}"); PrintCircleArea(radius); PrintCircleCircumference(radius); }В этом коде создается новый метод
PrintCircleInfoдля вызова существующих методов. Значениеradiusтакже передается каждому методу. Создание модульных методов помогает упорядочивать код и легко читать.Сохраните и запустите код, чтобы просмотреть следующие выходные данные:
Circle with radius 12 Area = 452.38896 Circumference = 75.39815999999999 Circle with radius 24 Area = 1809.55584 Circumference = 150.79631999999998
Обзор
Вот что вы узнали о области метода до сих пор:
- Переменные, объявленные внутри метода, доступны только для этого метода.
- Переменные, объявленные на верхнем уровне, доступны во всей программе.
- Методы не имеют доступа к переменным, определенным в разных методах.
- Методы могут вызывать другие методы.