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

на главную - закладки

Жанры

Язык программирования 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); // Количество процессоров

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

Газлайтер. Том 10

Володин Григорий
10. История Телепата
Фантастика:
боевая фантастика
5.00
рейтинг книги
Газлайтер. Том 10

На границе империй. Том 7. Часть 2

INDIGO
8. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
6.13
рейтинг книги
На границе империй. Том 7. Часть 2

Звездная Кровь. Изгой

Елисеев Алексей Станиславович
1. Звездная Кровь. Изгой
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Звездная Кровь. Изгой

Хозяин Теней 4

Петров Максим Николаевич
4. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Хозяин Теней 4

Картофельное счастье попаданки

Иконникова Ольга
Фантастика:
фэнтези
5.00
рейтинг книги
Картофельное счастье попаданки

Экзорцист: Проклятый металл. Жнец. Мор. Осквернитель

Корнев Павел Николаевич
Фантастика:
фэнтези
героическая фантастика
5.50
рейтинг книги
Экзорцист: Проклятый металл. Жнец. Мор. Осквернитель

Доктора вызывали? или Трудовые будни попаданки

Марей Соня
Фантастика:
юмористическая фантастика
попаданцы
5.00
рейтинг книги
Доктора вызывали? или Трудовые будни попаданки

Метатель

Тарасов Ник
1. Метатель
Фантастика:
боевая фантастика
попаданцы
рпг
фэнтези
фантастика: прочее
постапокалипсис
5.00
рейтинг книги
Метатель

Моя на одну ночь

Тоцка Тала
Любовные романы:
современные любовные романы
короткие любовные романы
5.50
рейтинг книги
Моя на одну ночь

Чехов. Книга 2

Гоблин (MeXXanik)
2. Адвокат Чехов
Фантастика:
фэнтези
альтернативная история
аниме
5.00
рейтинг книги
Чехов. Книга 2

Хозяин Теней 2

Петров Максим Николаевич
2. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Хозяин Теней 2

Сумеречный стрелок 7

Карелин Сергей Витальевич
7. Сумеречный стрелок
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сумеречный стрелок 7

Жизнь под чужим солнцем

Михалкова Елена Ивановна
Детективы:
прочие детективы
9.10
рейтинг книги
Жизнь под чужим солнцем

Красноармеец

Поселягин Владимир Геннадьевич
1. Красноармеец
Фантастика:
боевая фантастика
попаданцы
4.60
рейтинг книги
Красноармеец