Почему основная точка входа метода в большинстве программ на C# статична?
Почему основная точка входа метода в большинстве программ C# статична?
8 ответов
для вызова метода экземпляра вам нужен экземпляр объекта. Это означает, что для запуска вашей программы CLR необходимо создать экземпляр say Program
для вызова метода Main
. Следовательно, конструктор Program
будет выполняться до 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
метод как метод по умолчанию для вызова.
для каждого объекта класса, содержащего основной метод и другие методы и переменные , существуют отдельные копии каждой переменной и методов, содержащихся во всех объектах, но копия основного класса является только одной между ними, и поэтому, чтобы сделать копию между количеством объектов, мы должны сделать основной метод статическим.