Упражнение. Использование параметров в методах
При создании методов часто требуется предоставить некоторые сведения для используемого метода. Сведения, потребляемые методом, называются параметром. Вы можете указать столько параметров, сколько необходимо для выполнения задачи, или вообще нет.
Термины "параметр" и "аргумент" часто используются взаимозаменяемо. Однако параметр ссылается на переменную в сигнатуре метода. Аргумент — это значение, передаваемое при вызове метода.
Добавление параметров в методы
Параметры в методе работают аналогично переменным. Параметр определяется путем указания типа данных, за которым следует имя параметра. Параметры объявляются в сигнатуре метода, а значения параметров предоставляются вызывающим методом вместо инициализации внутри самого метода. Рассмотрим следующий код:
CountTo(5);
void CountTo(int max)
{
for (int i = 0; i < max; i++)
{
Console.Write($"{i}, ");
}
}
В этом примере метод CountTo принимает целочисленный параметр с именем max. Параметр используется внутри for цикла метода. При CountTo вызове целочисленное число 5 предоставляется в качестве аргумента.
В этом упражнении вы узнаете, как создавать и использовать собственные параметры метода.
Подготовка среды программирования
Этот модуль включает практические действия, которые помогут вам в процессе создания и выполнения демонстрационного кода. Рекомендуется выполнить эти действия с помощью Visual Studio Code в качестве среды разработки. Использование Visual Studio Code для выполнения этих задач поможет вам стать более уверенным в написании и выполнении кода в среде разработки, которая используется профессионалами по всему миру.
Откройте Visual Studio Code.
Для открытия Visual Studio Code можно использовать меню Windows (или эквивалентный ресурс для другой ОС).
В меню Visual Studio Code "Файл" выберите "Открыть папку".
В диалоговом окне "Открыть папку " перейдите в папку "Рабочий стол Windows".
Если у вас есть другое расположение папки, в котором хранятся проекты кода, вместо этого можно использовать это расположение папки. Для этого обучения важно иметь расположение, которое легко найти и помнить.
В диалоговом окне "Открыть папку" выберите "Выбрать папку".
Если появится диалоговое окно безопасности с запросом доверия авторам, нажмите кнопку "Да".
В меню Visual Studio Code Терминал выберите Новый терминал.
Обратите внимание, что в командной строке на панели терминала отображается путь текущей папки. Рассмотрим пример.
C:\Users\someuser\Desktop>Замечание
Если вы работаете на своем компьютере, а не в песочнице или размещенной среде, и вы выполнили другие модули Microsoft Learn в этой серии C#, возможно, вы уже создали папку проекта для примеров кода. Если это так, можно пропустить следующий шаг, который используется для создания консольного приложения в папке TestProject.
На командной строке терминала, чтобы создать новое консольное приложение в указанной папке, введите dotnet new console -o ./CsharpProjects/TestProject и нажмите Enter.
Эта команда .NET CLI использует шаблон программы .NET для создания проекта консольного приложения C# в указанном расположении папки. Команда создает папки CsharpProjects и TestProject для вас и использует TestProject в качестве имени
.csprojфайла.На панели EXPLORER раскройте папку CsharpProjects.
Вы увидите папку TestProject и два файла, файл программы C# с именем Program.cs и файл проекта C# с именем TestProject.csproj.
На панели EXPLORER выберите Program.cs, чтобы просмотреть файл кода в панели редактора.
Удалите существующие строки кода.
Вы будете использовать этот консольный проект C# для создания, сборки и запуска примеров кода во время этого модуля.
Закройте панель терминала.
Создание метода с параметрами
В этой задаче вы создадите метод, который настраивает запланированное время на другой часовой пояс GMT. Метод должен принимать список времени, текущий часовой пояс и новый часовой пояс. Давайте приступим!
Введите следующий код в редактор Visual Studio Code:
int[] schedule = {800, 1200, 1600, 2000};Чтобы создать метод с параметрами, введите следующий код в новой пустой строке:
void DisplayAdjustedTimes(int[] times, int currentGMT, int newGMT) { }Обратите внимание, что параметры объявляются аналогично тому, как вы объявляете переменные, используя тип данных, за которым следует имя переменной. Вы можете использовать параметры любого типа данных, например,
string,bool,int, массивы и многое другое! Несколько параметров в методе всегда разделены запятыми.Введите следующий код в методе
DisplayAdjustedTimes:int diff = 0; if (Math.Abs(newGMT) > 12 || Math.Abs(currentGMT) > 12) { Console.WriteLine("Invalid GMT"); }Обратите внимание, что не нужно объявлять переменные
newGMTиcurrentGMT, так как они уже указаны в сигнатуре метода. Вы также не инициализируете переменные, так как метод предполагает, что вызывающий объект предоставляет эти аргументы с назначенными значениями.На этом шаге вы создадите
int diffдля хранения разницы времени, а затем проверьте, что указанные значения GMT находятся между -12 и 12. ИспользованиеMath.Absдает абсолютное значение числа, поэтому значения GMT недопустимы, если они больше 12.Чтобы вычислить разницу
DisplayAdjustedTimesво времени, обновите метод следующим образом:int diff = 0; if (Math.Abs(newGMT) > 12 || Math.Abs(currentGMT) > 12) { Console.WriteLine("Invalid GMT"); } else if (newGMT <= 0 && currentGMT <= 0 || newGMT >= 0 && currentGMT >= 0) { diff = 100 * (Math.Abs(newGMT) - Math.Abs(currentGMT)); } else { diff = 100 * (Math.Abs(newGMT) + Math.Abs(currentGMT)); }В этом коде вы увидите, нужно ли добавлять или вычитать абсолютные значения часовых поясов GMT, чтобы получить разницу в часах. Если значения GMT имеют одинаковый знак (как положительный, так и отрицательный), разница часов равна разнице между двумя числами. Если значения GMT имеют противоположные знаки, то разница равна сумме двух чисел. Так как часы представлены в сотнях, вы умножаете результат на 100.
Чтобы отобразить результаты, введите следующий код в конце
DisplayAdjustedTimesметода:for (int i = 0; i < times.Length; i++) { int newTime = (times[i] + diff) % 2400; Console.WriteLine($"{times[i]} -> {newTime}"); }Чтобы вызвать метод, введите следующий код после объявления переменной
int[] schedule:DisplayAdjustedTimes(schedule, 6, -6);Обратите внимание, что переменные и литералы могут быть предоставлены в качестве аргументов для метода. Используя входные параметры, метод не ограничивается использованием значений глобальных переменных.
Проверка работы
В этой задаче вы запустите приложение из интегрированного терминала и убедитесь, что код работает правильно. Давайте начнем.
Сохраните работу с помощью ctrl + S или с помощью меню "Файл Visual Studio Code".
При необходимости откройте панель интегрированного терминала Visual Studio Code.
На панели обозревателя откройте терминал в папке TestProject, щелкните правой кнопкой мыши TestProject и выберите "Открыть в интегрированном терминале".
В командной строке терминала введите dotnet run
Убедитесь, что код создает следующие выходные данные:
800 -> 2000 1200 -> 0 1600 -> 400 2000 -> 800Если код отображает различные результаты, необходимо просмотреть код, чтобы найти ошибку и внести обновления. Запустите код еще раз, чтобы узнать, устранена ли проблема. Продолжайте обновлять и запускать код, пока код не выдает ожидаемые результаты.
Обзор
Вот что вы узнали о параметрах до сих пор:
- Сведения можно передавать в методы в виде параметров.
- Параметры объявляются в сигнатуре метода.
- Несколько параметров разделены запятыми.
- Методы могут принимать переменные или литеральные аргументы.