Книга: C# для профессионалов. Том II
Точка входа в программу
Основной точкой входа в программу является функция Main()
:
class MainEntryClass {
/// <summary>
/// Основная точка входа приложения.
/// </summary>
[STAThread]
static void Main() {
SquareRootForm TheMainForm = new SquareRootForm();
Application.Run(TheMainForm);
}
}
Это не очевидная точка входа в программу, но это — она. Правило в C# говорит, что выполнение программы начинается с метода с именем Main()
. Этот метод должен быть определен как статический в том же классе. Обычно должен быть только один метод во всех классах в исходном коде, который отвечает этому описанию в программе, иначе компилятор не будет знать, какой из них выбрать. Main()
здесь определен без параметров и как возвращающий void
(другими словами, не возвращающий ничего). Это не единственная возможная сигнатура этого метода, но это обычная сигнатура для приложения Windows (приложения командной строки получают параметры — это любые аргументы, задаваемые в командной строке).
Как упоминалось раже, код VB может иметь метод Main()
, но он редко используется и не является обязательным. В C# метод Main()
должен присутствовать как основная точка входа в программу.
Так как метод Main()
должен быть в классе, то здесь присутствует класс с именем MainEntryClass
. В этом классе нет ничего другого, но это не обязательно должно быть так, вполне допустимо для класса, в котором определена точка входа в программу, содержать и другие методы. Тот факт, что метол Main()
— статический метод, является важным. Мы говорили раньше, что статические методы являются специальными методами, которые могут выполняться без реального создания в начале программы объекта класса. Так как при выполнении прежде всего вызывается метод Main()
, то в этот момент не существует никаких экземпляров никаких классов — еще не выполнился никакой код для их создания. Вот почему точка входа должна быть статической.
Помимо ключевого слова static
, определение Main()
выглядит, как и предыдущие рассмотренные определения методов. Однако перед ним стоит в квадратных скобках слово [STAThread]
, [STAThread]
является примером атрибута — еще одной концепции, которая не имеет аналогов в исходном коде VB.
Атрибут является конструкцией, предоставляющей дополнительную информацию компилятору о некоторых элементах кода, и всегда имеющей форму слова (возможно также с некоторыми параметрами, хотя не в данном случае) в квадратных скобках сразу перед элементом, к которому он применяется. Этот конкретный атрибут сообщает компилятору о модели потоков выполнения, в которой должен выполняться код. Детали моделей потоков выполнения здесь рассматриваться не будут, но можно сказать, что запись [STAThread]
в исходном коде C# имеет эффект, аналогичный выбору модели потоков выполнения в Project Properties в VB IDE, хотя в VB это можно делать только для проектов ActiveX DLL и ActiveX Control. Отметим также, что эта аналогия только приблизительная, так как атрибут C# выбирает модель потоков выполнения .NET, а не модель потоков COM.
- Точка входа: Main() и main()
- Точка входа программы
- Глава 11. Соединения точка-точка и ретрансляторы
- Карточка складского учета
- Как запустить программу?
- Я забыл пароль входа в Windows, можно ли зайти в систему, не зная пароля?
- Как автоматически запускать ту или иную программу сразу после запуска Windows?
- Как просмотреть программу телепередач?
- Я установил программу и не хочу, чтобы другие пользователи о ней знали. Как скрыть ее?
- Удалил программу, а в компоненте Установка и удаление программ она осталась. Как ее удалить и оттуда?
- Как установить программу на компьютер
- 5.1.3.2. Точка и точка-точка