Упражнение. Общие сведения о области метода

Завершено

for циклы, if-else операторы и методы представляют различные типы блоков кода. Каждый блок кода имеет собственную область действия. Область — это регион программы, в которой доступны определенные данные. Переменные, объявленные внутри метода или любого блока кода, доступны только в этом регионе. По мере того как программы становятся более сложными, этот шаблон помогает программистам постоянно использовать четко именованные переменные и поддерживать простое чтение кода.

В этом упражнении вы узнаете больше о области метода, работая с различными типами методов и переменными.

Область тестирования переменной

Операторы, объявленные вне любого блока кода, называются операторами верхнего уровня. Переменные, объявленные на верхнем уровне, называются глобальными переменными. Глобальные переменные не ограничиваются любой областью действия и могут использоваться в любом месте программы. Глобальные переменные могут быть полезны для различных методов, которым требуется доступ к тем же данным. Однако важно обратить внимание на имена переменных в разных областях.

  1. В редакторе Visual Studio Code удалите существующий код из предыдущих упражнений.

  2. Введите следующий код в редактор 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 , принимаюющий параметр с тем же именем.

  3. Сохраните и запустите код, чтобы просмотреть следующие выходные данные:

    Jenna, Ayesha, Carlos, Viktor, 
    Robert, Vanya, 
    

    Обратите внимание, что параметр student метода имеет приоритет над глобальным student массивом. Важно сознательно подходить к выбору глобальных переменных, которые вы хотите, чтобы ваши методы использовали.

  4. Удалите предыдущий код.

  5. Введите следующий код в редактор:

    PrintCircleArea(12);
    
    void PrintCircleArea(int radius)
    {
        double pi = 3.14159;
        double area = pi * (radius * radius);
        Console.WriteLine($"Area = {area}");
    }
    

    Этот код вычисляет и отображает область круга.

  6. Попытайтесь ссылаться на переменные внутри PrintCircleArea метода, обновив код следующим образом:

    PrintCircleArea(12);
    double circumference = 2 * pi * radius;
    

    Сообщения об ошибках отображаются, сообщая о том, что имена pi и radius не существуют в текущей области. Эти переменные существуют только в PrintCircleArea области метода.

  7. Удалите неправильный код и добавьте следующий код:

    void PrintCircleCircumference(int radius)
    {
        double pi = 3.14159;
        double circumference = 2 * pi * radius;
        Console.WriteLine($"Circumference = {circumference}");
    }
    

    Так как переменная pi имеет одинаковое фиксированное значение и используется в обоих методах, это значение является хорошим кандидатом для глобальной переменной. В этом примере radius не является глобальной переменной, так что вы можете вызывать методы с различными значениями radius без необходимости обновлять переменную каждый раз.

  8. Обновите код следующим образом:

    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 без необходимости определять его. Возможно, вы уже догадались, что один метод может вызывать другой. Как правило, если метод определен в рамках программы, его можно вызвать в любом месте.

  9. Добавьте новый метод в код следующим образом:

    double pi = 3.14159;
    PrintCircleInfo(12);
    PrintCircleInfo(24);
    
    void PrintCircleInfo(int radius) 
    {
        Console.WriteLine($"Circle with radius {radius}");
        PrintCircleArea(radius);
        PrintCircleCircumference(radius);
    }
    

    В этом коде создается новый метод PrintCircleInfo для вызова существующих методов. Значение radius также передается каждому методу. Создание модульных методов помогает упорядочивать код и легко читать.

  10. Сохраните и запустите код, чтобы просмотреть следующие выходные данные:

    Circle with radius 12
    Area = 452.38896
    Circumference = 75.39815999999999
    Circle with radius 24
    Area = 1809.55584
    Circumference = 150.79631999999998
    

Обзор

Вот что вы узнали о области метода до сих пор:

  • Переменные, объявленные внутри метода, доступны только для этого метода.
  • Переменные, объявленные на верхнем уровне, доступны во всей программе.
  • Методы не имеют доступа к переменным, определенным в разных методах.
  • Методы могут вызывать другие методы.