Почему точка входа основного метода в большинстве программ на 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 и другие методы и переменные, существуют отдельные копии каждой переменной и методов, содержащихся во всех объектах, но копия основного класса является только одной между ними, поэтому для копирования между числом объектов мы имеем сделать основной метод статичным.