Почему статична точка входа основного метода в большинстве программ C#?
Чтобы вызвать метод экземпляра, вам нужен экземпляр объекта. Это означает, что для запуска вашей программы CLR потребуется создать экземпляр, скажем, Program
, чтобы вызвать метод Main
. Следовательно, конструктор Program
будет запускаться перед Main
, что полностью лишает цели наличия main.
Потому что в противном случае ему пришлось бы создать объект, а запуск конструктора мог вызвать отрицательные побочные эффекты.
Статические методы могут выполняться без создания экземпляра. По соглашению они имеют метод main
в качестве метода, вызываемого по умолчанию.
В противном случае, как вы могли бы создать свой экземпляр класса перед основным?
Среда выполнения .NET
вызывает метод Main
. (Примечание: Main также может быть вызван из другого места, например, из кода Main() в другом методе ExampleClass). Ключевое слово static
делает метод доступным без экземпляра
ExampleClass
. Таким образом, метод Main является точкой входа и должен быть объявлен статическим.
В противном случае программа потребует экземпляр, а любой экземпляр потребует программу.
Чтобы избежать этой неразрешимой круговой зависимости
main используется как точка входа
ссылка : http://en.wikipedia.org/wiki/C_Sharp_(язык_программирования
Я бы перевернул вопрос. В чем убедительное преимущество реализации функции, которая позволяет Main быть методом экземпляра? Функции дорогие; если нет убедительных преимуществ, они не будут реализованы.
У вас есть действительно веская причина, по которой Main должно быть разрешено быть методом экземпляра?
Концептуально у вас есть только один экземпляр статического объекта. И статический метод хорошо соответствует идиоме единственной начальной точки программы. Разработчики языка могли бы создать специальный программный класс для использования с основным методом, но решили создать единственную статическую функцию в качестве точки входа. На некоторых уровнях это действительно просто выбор дизайна.