Почему главная точка входа метода в большинство программ С# статична?
Почему главная точка входа в большинство статических программ С#?
Ответ 1
Для вызова метода экземпляра вам нужен экземпляр объекта. Это означает, что для запуска вашей программы CLR необходимо создать экземпляр say Program
, чтобы вызвать метод Main
. Следовательно, конструктор Program
будет выполняться до Main
, который побеждает цель иметь основное целое.
Ответ 2
Я бы поставил вопрос. Какова неотложная выгода от реализации функции, которая позволяет Main быть методом экземпляра? Особенности дороги; если нет убедительной выгоды, они не реализуются.
У вас есть действительно веская причина, почему Main должен быть разрешен как метод экземпляра?
Ответ 3
Концептуально у вас есть только один экземпляр статики. И статический метод хорошо отображает идиому единственной точки зрения для программы. Разработчики языка могли бы создать специальный программный класс для использования с основным методом, но решили создать в качестве точки входа одну статическую функцию. На некоторых уровнях это действительно просто выбор дизайна.
Ответ 4
Потому что в противном случае он должен был бы создать объект, и запуск конструктора может вызвать отрицательные побочные эффекты.
Ответ 5
Как вы могли бы создать экземпляр класса перед main в противном случае?
Ответ 6
Статические методы могут быть выполнены без создания экземпляра. По соглашению они имеют метод main
как метод по умолчанию для вызова.
Ответ 7
.NET runtime
вызывает метод Main
. (Примечание: Main можно также вызывать из другого места, например, из кода Main() в другом методе ExampleClass.) Ключевое слово static
делает этот метод доступным без instance
из ExampleClass
. Таким образом, основной метод является точкой входа и должен быть объявлен статическим.
В противном случае программе потребуется экземпляр, но любой экземпляр требуется программа.
Чтобы избежать этой неразрешимой circular dependency
main используется как точка входа
ссылка: http://en.wikipedia.org/wiki/C_Sharp_(programming_language
Ответ 8
для всех объектов класса содержит основной метод и другие методы и переменные, есть отдельные копии каждой переменной и методы, содержащиеся всеми объектами, но копия основного класса является только одной между ними, и поэтому для копирования между числом объектов, мы должны сделать основной метод статическим.