Читать «ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание» онлайн - страница 59
Эндрю Троелсен
Вариации метода Main()
Предыдущий вариант Main() был определен с одним параметром (массивом строк) и возвращал данные типа int. Однако это не единственно возможная форма Main(). Для построения точки входа приложения можно использовать любую из следующих сигнатур (в предположении, что она содержится в рамках C#-класса или определения структуры).
// Возвращаемого типа нет, массив строк в качестве аргумента
public static void Main(string[] args) {
}
// Возвращаемого типа нет, аргументов нет.
public static void Main() {
}
// Возвращаемый тип int (целое), аргументов нет.
public static int Main() {
}
Замечание. Метод Main() можно также определить, как private (частный, приватный), а не public (открытый, общедоступный). Это будет означать, что другие компоновочные блоки не смогут непосредственно вызвать точку входа приложения. В Visual Studio 2005 метод Main() программы автоматически определяется, как приватный.
Очевидно, что при выборе варианта определения Main() нужно учитывать ответы на следующие два вопроса. Bo-первых предполагается ли при выполнении программы обрабатывать предоставленные пользователем параметры командной строки? Если да, то значения параметров должны запоминаться в массиве строк. Во-вторых, нужно ли будет по завершении работы Main() предоставить системе возвращаемое значение? Если да, то возвращаемым типом данных должно быть int, а не void.
Обработка аргументов командной строки
Давайте изменим класс HelloClass так. чтобы он мог обрабатывать параметры командной строки.
// Проверить, передавались ли аргументы командной строки.
using System;
class HelloClass {
public static int Main(string[] args) {
Console.WriteLine("*** Аргументы командной строки ***");
for (int i = 0; i ‹ args.Length; i
…
}
}
Здесь с помощью свойства Length объект System.Array проверяется, содержит ли массив строк какие-либо элементы (как вы убедитесь в дальнейшем, все массивы в C# на самом деле имеют тип System.Array и таким образом имеют общее множество членов). В результате прохода по всем элементам массива их значения выводятся в окно консоли. Аргументы в командной строке указываются так, как показано на рис
Рис. 3.1. Аргументы вызова приложения в командной строке
Вместо стандартного цикла for для итераций над массивами входных строк можно использовать ключевое слово C# foreach. Этот элемент синтаксиса будет подробно рассматриваться позже, но вот вам пример его использования:
// Обратите внимание на то, что при использовании'foreach'
// нет необходимости проверять длину массива.
public static int Main(string[] args) {
…
foreach (string s in args) Console.WriteLine("Аргумент: {0} ", s);
…
}
Наконец, доступ к аргументам командной строки обеспечивает также статический метод GetCommandLineArgs() типа System.Environment. Возвращаемым значением этого метода является массив строк. Его первый элемент идентифицирует каталог, содержащий приложение, а остальные элементы в массиве содержат по отдельности аргументы командной строки (при этом нет необходимости определять для метода Main() параметр в виде массива строк).