Аргументы запуска в C#: что это и как их применять
2026-02-21 18:26 Diff

#Руководства

  • 2 июл 2020
  • 0

Входные параметры полезны не только в консольных приложениях, но даже в играх. Что это и как они нам пригодятся?

 vlada_maestro / shutterstock

Пишет о программировании, в свободное время создаёт игры. Мечтает открыть свою студию и выпускать ламповые RPG.

Создавая приложение на C#, вы могли заметить, что у метода Main () должен быть аргумент:

static void Main(string[] args) { Console.WriteLine("Hello World!"); }

Вернее, целый массив аргументов. Он нужен, чтобы влиять на работу программы: например, запускать ваше приложение из другого приложения, передавая ему любую команду.

Давайте разберёмся, как передавать и использовать аргументы при запуске приложения на C#.

Так как это обычный массив строк, мы можем перебрать его, чтобы получить все аргументы:

static void Main(string[] args) { foreach(string arg in args) { Console.WriteLine(arg); } }

Скомпилируйте приложение, а затем запустите его через терминал, указав аргументы после названия файла.

Важно! Аргументы разделяются пробелом, и, если вы хотите передать какой-то текст, его нужно заключить в двойные кавычки:

В Windows всё работает аналогичным образом.

Как мы видим, каждый аргумент был выведен на новой строке.

Вы можете создать ярлык, который будет запускать приложение c определёнными аргументами. Для этого зайдите в свойства ярлыка и укажите все аргументы в поле Target:

На русском языке поле будет называться «Путь».

Сработает это так же, как если бы вы передали аргумент через консоль:

Мы можем проверять, какие аргументы передал пользователь, чтобы потом реагировать на это. Например, показать справку:

static void Main(string[] args) { foreach(string arg in args) { //Если пользователю нужна помощь if(arg == "-help") { //Показываем справку ShowHelp(); //Прерываем цикл, чтобы пользователь мог увидеть только справку break; } } } public static void ShowHelp() { Console.WriteLine("----Commands----\n-help - show help\n-i - input file e. g. -i file.txt\n-o - output file e. g. -o file.txt"); }

Вот как она выглядит:

Здесь перед аргументами стоят дефисы — такие аргументы называются флагами и помогают программе понять, что от неё хотят. В нашем случае в справке написано, что вы можете ввести команду:

Программа поймёт, что это путь к файлу. Остаётся только прописать всю логику. Для этого придётся заменить цикл foreach на for, потому что нам важно иметь доступ к индексам аргументов:

for(int i = 0; i < args.Length; i++) { if(args[i] == "-help") { ShowHelp(); break; } //Переменная для хранения текста из файла string text = ""; //Проверяем, является ли текущий аргумент флагом -i if(args[i] == "-i") { //Если дальше нет аргументов, выводим ошибку if(i + 1 >= args.Length) { Console.WriteLine("Missing argument!"); break; } else { //Иначе считываем текст из файла, адрес которого идёт после флага //Не забудьте проверить, существует ли такой файл text = File.ReadAllText(args[i + 1]); if(i + 2 >= args.Length || args[i + 2] != "-o") { //Если дальше нет флага -o, то просто выводим текст в сообщении Console.WriteLine(text); } else { //Если флаг -o есть, то проверяем, указан ли адрес нового файла if(i + 3 >= args.Length) { //Если нет, то выводим ошибку Console.WriteLine("Missing argument!"); break; } else { //Если есть, то сохраняем данные в новый файл File.WriteAllText(args[i + 3], text); } } } } }

Если вы укажете флаг -i, то эта программа должна считать и вывести данные из файла:

Если после этого вы добавите ещё и флаг -o, то программа сохранит данные в новый файл:

Способов применения входных аргументов может быть очень много. Тот же компилятор.NET работает с помощью них. Вот только некоторые:

Например, чтобы создать консольное приложение, нужно ввести команду dotnet new console. А если потом его надо скомпилировать и запустить — dotnet run.

Еще одна область применения — игры. Вы можете указывать аргументы напрямую для ярлыка игры или же через настройки запуска в Steam. Например, желаемое разрешение:

Опции запуска Dark Messiah of Might and Magic:
PROTON_FORCE_LARGE_ADDRESS_AWARE=1 %command% -w 1920 -h 1080

Вы можете добавить любые опции:

  • включение режима Разработчика с расширенными возможностями;
  • включение режима пониженной нагрузки;
  • запуск в полноэкранном режиме и так далее.
Бесплатный курс по Python ➞
Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу