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

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

8 ответов


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


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

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


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


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


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


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

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

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


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


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


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