Привет, мои дорогие любители программирования. Сегодня мы с вами поговорим про аргументы командной строки в программах, написанных на C#: для чего они вообще, как реализовать на C# и как избежать ошибок. Ну что, запускаем наши Visual Studio, поехали!
Для чего нужны аргументы командной строки.
В самом деле для чего? Для чего вообще нужна командная строка? Уже 30 лет во всем мире известны операционные системы семейства Windows, Mac OS, где вся работа пользователя построено на графическом оконном интерфейсе. Активно используется графический интерфейс в операционных системах Linux, никуда без него в смартфонах и планшетах на IOs и Андроид. В этом нашем современном “виртуально-оконном” мире консоль с командной строкой смотрится чуть ли не атавизмом 80-х, когда миром правили DOS и Linux-системы под командную строку.
Но не будем спешить с выводами.
Да, и в нашем “оконном мире” без программ, управляемых с командной строки, никуда. Сейчас они называются консольными приложениями.
Консольное приложение — это программный продукт, который взаимодействует с пользователем через текстовый интерфейс, называемый консолью. Консоль представляет собой специальное окно, в котором пользователь может вводить команды и получать результаты их выполнения.
Принцип работы консольного приложения заключается в следующем:
- Пользователь открывает консоль и вводит команду с аргументами (например apt install mc).
- Консольное приложение принимает введенную команду и выполняет ее, обрабатывая аргументы и получая результат (по команде apt install mc запускается консольное приложение apt, выполняет команду первого аргумента install, и производится установка программы mc, указанной во втором аргументе).
- Результат работы консольного приложения выводится в консоли и становится доступен для пользовательского просмотра или дальнейшего использования (это мы можем наблюдать в окне выполнения команды).
- Пользователь может вводить новые команды, повторяя процесс с пункта 1.
Преимущества консольных приложений:
- Простота использования и понимания для опытных пользователей, работающих в командной строке.
- Возможность автоматизации задач с помощью скриптов и пакетных файлов (например, мы можем задать выполнение программы в определенный день в определенное время, т.е. задать расписание выполнения программы).
- Повышенная производительность и низкое потребление системных ресурсов по сравнению с графическими интерфейсами.
- Возможность удаленного управления и выполнения задач на удаленных компьютерах через сеть (например с использованием SSH).
Я привел примеры выполнения консольных приложений на Linux, но на Windows и Mac принцип тот же самый.
Как задавать аргументы командной строки для программ на С#
И вот настало время запустить Visual Studio. Запускаем и выбираем в начальном окне режим “Создание проекта”
Тип приложения выбираем Консольное приложение (Майкрософт) и жмем Далее
Назовём нашу программу arg. И снова Далее
Платформу выбираем какая есть по умолчанию, это для нас не суть важно. Жмем Создать. И вот мы создали проект.
Так нам создаст проект Visual Studio 2022 или более поздняя версия.
В более старых версиях код у нас будет вот таким:
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
}
}
Это в принципе одно и то же, эти коды эквивалентны. Но в старой записи для нас с вами выделено кое-что важное. Давайте посмотрим на объявление класса Main:
static void Main(string[] args)
При объявлении класса мы видим параметр - строковый массив args. Этот массив и есть передаваемые нам аргументы командной строки.
Давайте запустим нашу программу на исполнение. Нажмем кнопку с зеленой стрелочкой
По нажатии любой клавиши окно закроется. У нас с вами и скомпилировалась, и запустилась наша программа.
Разделение компиляции и выполнения программы
В прошлом разделе у нас с вами и скомпилировалась, и запустилась программа, выводящая надпись Hello, World! Этот тип запуска новосозданной программки конечно удобен, но… не в нашем случае. Мы же с вами будем не только запускать нашу прогу, но и передавать ей различные аргументы. Поэтому нам необходимо перейти в ту папку. где создается наш exe файл.
Для этой цели подскажу лайфхак. Надо перейти в Обозреватель решений (в Visual Studio обычно справа), нажатием правой кнопки мыши вызвать контекстное меню и выбрать пункт “Открыть папку в проводнике”
Откроется папка, но exe-файла вы там не найдете
Для того чтобы добраться до exe файла, вам необходимо перейти в папку bin, потом в debug, потом в папочку с именем вашей платформы. И вот вуаля:
Здесь есть exe файл, но если вы его запустите щелчком мыши, черное окно быстро откроется и быстро закроется, вы даже ничего не разглядите. Для работы с нашей программкой запускаем в поле выбора пути команду cmd.
Появляется черное окно. В нем мы пишем arg.exe, нажимаем Enter и видим результат выполнения программы.
Займемся программированием аргументов.
Если мы сейчас напишем в командной строке arg.exe -a 34 -file text.txt и запустим всё, результат выполнения не поменяется, программа так же выведет Hello, World! Это потому что мы не научили программу считывать, что есть в аргументах.
Давайте с вами поработаем с массивом args. Для начала надо проверить, пустой ли он или что-то в нем есть (то есть переданы ли какие-нибудь аргументы или нет). Перепишем наш код следующим образом:
if (args.Length> 0)
Console.WriteLine("Есть аргументы");
else
Console.WriteLine("Нет аргументов");
То есть если переданы аргументы, то у нас выйдет сообщение, что аргументы есть, иначе - программа запущена без аргументов. Компилируем программу и выполняем с аргументами и без из командной строки
Теперь можно и вывести значения аргументов на экран. Перепишем код еще раз
if (args.Length > 0)
{
foreach (string arg in args)
Console.WriteLine(arg);
}
else
Console.WriteLine("Нет аргументов");
То если, если args пустой, то так же выводим, что нет аргументов. А вот инаааче… Иначе, если массив не пустой, то через цикл foreach выводим содержимое массива. Вот и вся программа. Компилируем, выполняем.
Вот и всё на сегодня. Продолжим работу над аргументами в продолжениях этой статьи. Подписывайтесь и жду ваших комментариев!
#c# #аргументы #консоль