Чтение онлайн

на главную

Жанры

Язык программирования C#9 и платформа .NET5
Шрифт:

{

.entrypoint

...

} // end of method '<Program>$'::'<Main>$'

} // end of class '<Program>$'

Если в программе в качестве точки входа по-прежнему применяется метод

Main
, тогда обеспечьте, чтобы сигнатура метода принимала строковый массив по имени
args
:

static int Main(string[] args)

{

...

}

Здесь

с использованием свойства
Length
класса
System.Array
производится проверка, есть ли элементы в массиве строк. Как будет показано в главе 4, все массивы C# фактически являются псевдонимом класса
System.Array
и потому разделяют общий набор членов. По мере прохода в цикле по элементам массива их значения выводятся на консоль. Предоставить аргументы в командной строке в равной степени просто:

C:\SimpleCSharpApp>dotnet run /arg1 -arg2

***** My First C# App *****

Hello World!

Arg: /arg1

Arg: -arg2

Вместо стандартного цикла

for
для реализации прохода по входному строковому массиву можно также применять ключевое слово
foreach
. Вот пример использования
foreach
(особенности конструкций циклов обсуждаются далее в главе):

// Обратите внимание, что в случае применения foreach

// отпадает необходимость в проверке размера массива.

foreach(string arg in args)

{

Console.WriteLine("Arg: {0}", arg);

}

Console.ReadLine;

return 0;

Наконец, доступ к аргументам командной строки можно также получать с помощью статического метода

GetCommandLineArgs
типа
System.Environment
. Данный метод возвращает массив элементов
string
. Первый элемент содержит имя самого приложения, а остальные — индивидуальные аргументы командной строки. Обратите внимание, что при таком подходе больше не обязательно определять метод
Main
как принимающий массив
string
во входном параметре, хотя никакого вреда от этого не будет.

// Получить аргументы с использованием System.Environment.

string[] theArgs = Environment.GetCommandLineArgs;

foreach(string arg in theArgs)

{

Console.WriteLine("Arg: {0}", arg);

}

Console.ReadLine;

return 0;

На заметку! Метод

GetCommandLineArgs
не получает аргументы для приложения через метод
Main
и не полагается на параметр
string[] args
.

Разумеется, именно на вас возлагается решение о том, на какие аргументы командной строки должна реагировать программа (если они вообще будут предусмотрены), и как они должны быть сформатированы (например,

с префиксом
или
/
). В показанном выше коде мы просто передаем последовательность аргументов, которые выводятся прямо в окно командной строки. Однако предположим, что создается новое игровое приложение, запрограммированное на обработку параметра вида
– godmode
. Когда пользователь запускает приложение с таким флагом, в отношении него можно было бы предпринять соответствующие действия.

Указание аргументов командной строки в Visual Studio

В реальности конечный пользователь при запуске программы имеет возможность предоставлять аргументы командной строки. Тем не менее, указывать допустимые флаги командной строки также может требоваться во время разработки в целях тестирования программы. Чтобы сделать это в Visual Studio, щелкните правой кнопкой на имени проекта в окне Solution Explorer, выберите в контекстном меню пункт Properties (Свойства), в открывшемся окне свойств перейдите на вкладку Debug (Отладка) в левой части окна, введите желаемые аргументы в текстовом поле Application arguments (Аргументы приложения) и сохраните изменения (рис. 3.1).

Указанные аргументы командной строки будут автоматически передаваться методу

Main
во время отладки или запуска приложения внутри IDE-среды Visual Studio.

Интересное отступление от темы: некоторые дополнительные члены класса System.Environment

Помимо

GetCommandLineArgs
класс
Environment
открывает доступ к ряду других чрезвычайно полезных методов. В частности, с помощью разнообразных статических членов этот класс позволяет получать детальные сведения, касающиеся операционной системы, под управлением которой в текущий момент функционирует ваше приложение .NET 5. Для оценки полезности класса
System.Environment
измените свой код, добавив вызов локального метода по имени
ShowEnvironmentDetails
:

// Локальный метод внутри операторов верхнего уровня.

ShowEnvironmentDetails;

Console.ReadLine;

return -1;

}

Реализуйте метод

ShowEnvironmentDetails
после операторов верхнего уровня, обращаясь в нем к разным членам типа
Environment
:

static void ShowEnvironmentDetails

{

// Вывести информацию о дисковых устройствах

// данной машины и другие интересные детали.

foreach (string drive in Environment.GetLogicalDrives)

{

Console.WriteLine("Drive: {0}", drive); // Логические устройства

}

Console.WriteLine("OS: {0}", Environment.OSVersion);

// Версия операционной системы

Console.WriteLine("Number of processors: {0}",

Environment.ProcessorCount); // Количество процессоров

Поделиться:
Популярные книги

Прометей: повелитель стали

Рави Ивар
3. Прометей
Фантастика:
фэнтези
7.05
рейтинг книги
Прометей: повелитель стали

Гром над Академией Часть 3

Машуков Тимур
4. Гром над миром
Фантастика:
фэнтези
5.25
рейтинг книги
Гром над Академией Часть 3

Уязвимость

Рам Янка
Любовные романы:
современные любовные романы
7.44
рейтинг книги
Уязвимость

Войны Наследников

Тарс Элиан
9. Десять Принцев Российской Империи
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Войны Наследников

Законы рода

Flow Ascold
1. Граф Берестьев
Фантастика:
фэнтези
боевая фантастика
аниме
5.00
рейтинг книги
Законы рода

«Три звезды» миллиардера. Отель для новобрачных

Тоцка Тала
2. Три звезды
Любовные романы:
современные любовные романы
7.50
рейтинг книги
«Три звезды» миллиардера. Отель для новобрачных

Мимик нового Мира 13

Северный Лис
12. Мимик!
Фантастика:
боевая фантастика
юмористическая фантастика
рпг
5.00
рейтинг книги
Мимик нового Мира 13

Месть за измену

Кофф Натализа
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Месть за измену

Мастер 3

Чащин Валерий
3. Мастер
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Мастер 3

Не грози Дубровскому! Том 11

Панарин Антон
11. РОС: Не грози Дубровскому!
Фантастика:
фэнтези
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Не грози Дубровскому! Том 11

Наваждение генерала драконов

Лунёва Мария
3. Генералы драконов
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Наваждение генерала драконов

Огненный князь 4

Машуков Тимур
4. Багряный восход
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Огненный князь 4

Мужчина не моей мечты

Ардова Алиса
1. Мужчина не моей мечты
Любовные романы:
любовно-фантастические романы
8.30
рейтинг книги
Мужчина не моей мечты

Золушка по имени Грейс

Ром Полина
Фантастика:
фэнтези
8.63
рейтинг книги
Золушка по имени Грейс