Передача параметр запуска

Когда вы запускаете консольное приложение, вы можете передавать ему аргументы командной строки в качестве входных данных. Эти аргументы обычно передаются в виде строк и вы можете получить к ним доступ в своем коде, используя параметр args метода Main, а в упрощённой записи просто args.

Вот пример того, как принимать аргументы запуска в консольном приложении C#, используя операторы верхнего уровня в vscode в macOS:

  1. Давайте в папке с нашими уроками введём команду:

    dotnet new console -o lesson04
    
  2. Заменим код Program.cs на:

    if (args.Length == 0)
    {
      Console.WriteLine("No launch arguments provided.");
    }
    else
    {
      Console.WriteLine($"Launch arguments: {string.Join(", ", args)}");
    }
    

    В этом примере кода мы проверяем были ли какие-либо аргументы запуска переданы приложению. Если args.Length равен нулю, мы показываем сообщение о том, что аргументы запуска не были предоставлены. Если есть аргументы запуска, мы используем метод string.Join, чтобы объединить их в одну строку и отобразить в консоли. На что тут стоит обратить внимание:

  3. Метод массива Length это метод возвращающий длину массива.

    <aside> 🦧 Подробней про Array.Length можно почитать тут https://learn.microsoft.com/ru-ru/dotnet/api/system.array.length?view=net-7.0

    </aside>

  4. Ключевое слово if это условный оператор, имеет запись формата if (условие).

  5. Ключевое слово else это условный оператор который выполняется когда условие перед ним не выполняется.

    <aside> 🦧 Подробней про if и else можно почитать тут https://learn.microsoft.com/ru-ru/dotnet/csharp/language-reference/statements/selection-statements#the-if-statement

    </aside>

  6. Запись формата $”Text: {myValye}” это объединение строк. В процессе этой операции будет произведена попытка приведения типа myValue к строке. Эта запись эквивалентна более старому формату записи “Text: “ + myValue.

    <aside> 🦧 Подробней про инетрполяцию строк можно почитать тут https://learn.microsoft.com/ru-ru/dotnet/csharp/language-reference/tokens/interpolated

    </aside>

  7. 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>

  8. Фигурные скобочки { } выделяют код в отдельный блок кода, если следующий за условным оператором блок кода состоит из одной строки код можно не оборачивать. Это означает что код можно переписать удалив все { } оставив отступы и он продолжит работать как раньше. Пример:

    if (args.Length == 0)
      Console.WriteLine("No launch arguments provided.");
    else
      Console.WriteLine($"Launch arguments: {string.Join(", ", args)}");
    
  9. На этом всё, давайте сохраним файл и убедимся что консоль находится в папке с уроком lesson04.

  10. В консоле перейдите в папку с проектом.

  11. Запустите приложение без параметров:

    dotnet run
    
  12. Вы получите вывод:

    No launch arguments provided.

  13. И с параметрами:

    dotnet run --argument1 value1 --argument2 value2
    
  14. Вы получите вывод:

    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>