Метод Main()

Любая программа на С# (точнее, любая используемая в проекте сборка) должна содержать класс, в котором объявляется статический (static) метод Main(). Этот метод определяет точку входа в программу (сборку): именно сюда передается управление в момент начала работы программы. Обратите внимание: название метода начинается прописной буквой. Такое написание обязательно.

Метод Main() часто определяется как целочисленная функция типа int, принимающая входной параметр в виде массива строк string[] и возвращающая код завершения работы программы. Этот код может быть любым, если программа завершилась ненормально, или 0 — в противном случае. В листинге 2.1 приводится текст консольной программы, выводящей на экран строку «Привет, мир!».

Листинг 2.1. Пример консольной программы

using System;

class HelloClass

{

public static int Main(string[] args)

{

Console.WriteLine("Привет, мир!");

return 0;

}

}

Мы создали класс HelloClass, который поддерживает единственный метод — Main(). Он определен с модификаторами public и static. Подробнее об объявлении методов сказано в главе 8, сейчас лишь поясним, что зарезервированное слово public определяет область видимости метода (в нашем случае метод доступен из любой точки в данной программе или извне), а слово static означает, что к методу можно обращаться на уровне класса, то есть не создавая объект (экземпляр) класса HelloClass.

Кроме того, наш метод принимает единственный параметр в виде набора строк. В нашей программе этот параметр не используется. На самом деле в нем программе передаются параметры ее запуска из командной строки. Эти параметры могут влиять на работу программы, например, в них может передаваться пароль пользователя, место расположения дополнительных файлов с данными и т. п.

Если, как в нашем примере, параметры запуска не используются в программе, их можно опустить, а если операционная система не требует возвращения кода завершения программы, метод можно определить как процедуру. В листинге 2.2 показан вариант программы, которая не принимает параметров запуска и не возвращает код завершения.

Листинг 2.2. Упрощенный вариант программы

using System;

class HelloClass

{

public static void Main()

{

Console.WriteLine("Привет, мир!");

}

}

Чтобы определить метод не как функцию типа int, а как процедуру (то есть подпрограмму, которая не возвращает результат), мы указали тип void, что в переводе означает пустой. Если вы решите анализировать входные параметры запуска программы, это можно сделать так, как показано в листинге 2.3.

Листинг 2.3. Анализ параметров запуска

using System;

class HelloClass

{

public static void Main(string[] args)

{

foreach(string s in args)

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

}

}

Предлагаю ознакомиться с аналогичными статьями: