Обработка аргументов командной строки
Давайте изменим класс HelloClass так. чтобы он мог обрабатывать параметры командной строки.
// Проверить, передавались ли аргументы командной строки.
using System;
class HelloClass {
public static int Main(string[] args) {
Console.WriteLine("*** Аргументы командной строки ***");
for (int i = 0; i ‹ args.Length; i ++ ) Console.WriteLine("Apгyмeнт: {0} ", args[i]);
…
}
}
Здесь с помощью свойства Length объект System.Array проверяется, содержит ли массив строк какие-либо элементы (как вы убедитесь в дальнейшем, все массивы в C# на самом деле имеют тип System.Array и таким образом имеют общее множество членов). В результате прохода по всем элементам массива их значения выводятся в окно консоли. Аргументы в командной строке указываются так, как показано на рис . 3.1.
Рис. 3.1. Аргументы вызова приложения в командной строке
Вместо стандартного цикла for для итераций над массивами входных строк можно использовать ключевое слово C# foreach. Этот элемент синтаксиса будет подробно рассматриваться позже, но вот вам пример его использования:
// Обратите внимание на то, что при использовании'foreach'
// нет необходимости проверять длину массива.
public static int Main(string[] args) {
…
foreach(string s inargs) Console.WriteLine("Аргумент: {0} ", s);
…
}
Наконец, доступ к аргументам командной строки обеспечивает также статический метод GetCommandLineArgs() типа System.Environment. Возвращаемым значением этого метода является массив строк. Его первый элемент идентифицирует каталог, содержащий приложение, а остальные элементы в массиве содержат по отдельности аргументы командной строки (при этом нет необходимости определять для метода Main() параметр в виде массива строк).
public static int Main(string[] args) {
...
// Получение аргументов с помощью System.Environment.
string[] theArgs = Environment.GetCommandLineArgs();
Console.WriteLine("Путь к приложению: {0}", theArgs[0]);
…
}
Использование аргументов командной строки в Visual Studio 2005
Конечный пользователь указывает аргументы командной строки при запуске программы. В процессе разработки приложения вы можете указать флаги командной строки с целью тестирования программы. Чтобы сделать это в Visual Studio 2005, выполните двойной щелчок на пиктограмме Properties (Свойства) в окне Solution Explorer (Обзор решений) и выберите вкладку Debug (Отладка). После этого укажите нужные значения аргументов в поле текста Command line arguments (Аргументы командной строки), рис. 3.2.
Рис. 3.2. Установка аргументов командной строки в Visual Studio 2005
Несколько слов о классе System.Environment
Давайте рассмотрим класс System.Environment подробнее. Этот класс содержит ряд статических членов, позволяющих получить информацию относительно операционной системы, в которой выполняется .NET-приложение. Чтобы иллюстрировать возможности этого класса, измените метод Mаin() в соответствии со следующей логикой.
public static int Main(string[] args) {
...
// Информация об операционной системе.
Console.WriteLine("Используемая ОС: {0} ", Environment.OSVersion);
// Каталог, в котором находится приложение.
Console.WriteLine("Текущий каталог: {0}: ", Environment.CurrentDirectory);
// Список дисководов на данной машине.
string[] drives = Environment.GetLogicalDrives();
for (int i = 0; i ‹ drives.Length; i ++ )
Console.WriteLine("Диск {0}: {1} ", i, drives[i]);
// Версия .NET-платформы, выполняемая на машине.
Console.WriteLine("Выполняемая версия .NET: {0} ", Environment.Version);
…
}
Возможный вариант вывода показан на рис. 3.3.
Рис. 3.3. Переменные окружения за работой
Тип System.Envirоnmеnt содержит определения и других членов, а не только представленных в данном примере. В табл. 3.1 показаны некоторые интересные свойства, но непременно загляните в документацию .NET Framework 2.0 SDK, чтобы узнать подробности.
Таблица 3.1.Некоторые свойства System.Environment
Свойстве |
Описание |
MashineName |
Имя текущей машины |
NewLine |
Символ перехода на новую строку для текущего окружения |
ProcessorCount |
Число процессоров текущей машины |
SystemDirectory |
Полный путь к системному каталогу |
UserName |
Имя модуля, запустившего данное приложение |
Определение классов и создание объектов
Читать дальше