Когда вы запускаете консольное приложение, вы можете передавать ему аргументы командной строки в качестве входных данных. Эти аргументы обычно передаются в виде строк и вы можете получить к ним доступ в своем коде, используя параметр args метода Main, а в упрощённой записи просто args.
Вот пример того, как принимать аргументы запуска в консольном приложении C#, используя операторы верхнего уровня в vscode в macOS:
Давайте в папке с нашими уроками введём команду:
dotnet new console -o lesson04
Заменим код Program.cs на:
if (args.Length == 0)
{
Console.WriteLine("No launch arguments provided.");
}
else
{
Console.WriteLine($"Launch arguments: {string.Join(", ", args)}");
}
В этом примере кода мы проверяем были ли какие-либо аргументы запуска переданы приложению. Если args.Length равен нулю, мы показываем сообщение о том, что аргументы запуска не были предоставлены. Если есть аргументы запуска, мы используем метод string.Join, чтобы объединить их в одну строку и отобразить в консоли. На что тут стоит обратить внимание:
Метод массива Length это метод возвращающий длину массива.
<aside>
🦧 Подробней про Array.Length можно почитать тут https://learn.microsoft.com/ru-ru/dotnet/api/system.array.length?view=net-7.0
</aside>
Ключевое слово if это условный оператор, имеет запись формата if (условие).
Ключевое слово else это условный оператор который выполняется когда условие перед ним не выполняется.
<aside>
🦧 Подробней про if и else можно почитать тут https://learn.microsoft.com/ru-ru/dotnet/csharp/language-reference/statements/selection-statements#the-if-statement
</aside>
Запись формата $”Text: {myValye}” это объединение строк. В процессе этой операции будет произведена попытка приведения типа myValue к строке. Эта запись эквивалентна более старому формату записи “Text: “ + myValue.
<aside> 🦧 Подробней про инетрполяцию строк можно почитать тут https://learn.microsoft.com/ru-ru/dotnet/csharp/language-reference/tokens/interpolated
</aside>
string.Join(", ", args) это статическая функция Join класса String (ключевое слово string является псевдонимом класса String), объединяет все элементы массива в одну строку через разделитель “, “.
<aside>
🦧 Подробней про string.Join можно почитать тут https://learn.microsoft.com/ru-ru/dotnet/api/system.string.join?view=net-7.0
</aside>
<aside>
🦧 Подробнее про string можно почитать тут https://learn.microsoft.com/ru-ru/dotnet/csharp/language-reference/builtin-types/reference-types#the-string-type
</aside>
Фигурные скобочки { } выделяют код в отдельный блок кода, если следующий за условным оператором блок кода состоит из одной строки код можно не оборачивать. Это означает что код можно переписать удалив все { } оставив отступы и он продолжит работать как раньше. Пример:
if (args.Length == 0)
Console.WriteLine("No launch arguments provided.");
else
Console.WriteLine($"Launch arguments: {string.Join(", ", args)}");
На этом всё, давайте сохраним файл и убедимся что консоль находится в папке с уроком lesson04.
В консоле перейдите в папку с проектом.
Запустите приложение без параметров:
dotnet run
Вы получите вывод:
No launch arguments provided.
И с параметрами:
dotnet run --argument1 value1 --argument2 value2
Вы получите вывод:
Launch arguments: --argument1, value1, --argument2, value2
<aside> 🦧 В этом уроке мы научились передавать в приложение аргументы запуска, познакомились с некоторыми ключевыми словами C#, методом интерфейса массива, статической функцией строки. Это позволит нам начать писать простые приложения передавать в них параметры командой при запуске. Поподробнее про это можно почитать тут https://learn.microsoft.com/ru-ru/dotnet/csharp/fundamentals/program-structure/main-command-line.
</aside>
<aside> 💡 Решение доступно тут https://github.com/vahpetr/lessions/tree/main/lesson04
</aside>