Почему точка входа основного метода в большинстве программ на C# статична?

Почему точка входа основного метода в большинстве программ на C# статична?

8 ответов

Решение

Чтобы вызвать метод экземпляра, вам нужен экземпляр объекта. Это означает, что для запуска вашей программы CLR потребуется создать экземпляр Program для того, чтобы вызвать метод Main, Следовательно, конструктор Program будет бегать раньше Main который побеждает цель иметь главный в целом.

Я бы перевернул вопрос. В чем заключается убедительная выгода от реализации функции, которая позволяет Main быть экземпляром метода? Особенности дорогие; если нет убедительных преимуществ, они не будут реализованы.

У вас есть действительно веская причина, почему Main следует разрешить использовать метод экземпляра?

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

Как вы могли бы создать свой экземпляр класса перед главным в противном случае?

Потому что в противном случае он должен был бы создать объект, а запуск конструктора может вызвать негативные побочные эффекты.

Статические методы могут быть выполнены без создания экземпляра. По соглашению они имеют main метод в качестве метода по умолчанию для вызова.

.NET runtime вызывает Main метод. (Примечание: Main также может быть вызван из другого места, например, из кода Main() в другом методе ExampleClass.) static ключевое слово делает метод доступным без instance из ExampleClass, Таким образом, метод Main является точкой входа и должен быть объявлен как static.

В противном случае программе потребуется экземпляр, но для любого экземпляра потребуется программа.

Чтобы избежать этого неразрешимого circular dependency main используется как точка входа


ссылка: http://en.wikipedia.org/wiki/C_Sharp_(programming_language

Для каждого объекта класса содержится метод main и другие методы и переменные, существуют отдельные копии каждой переменной и методов, содержащихся во всех объектах, но копия основного класса является только одной между ними, поэтому для копирования между числом объектов мы имеем сделать основной метод статичным.

Другие вопросы по тегам