Почему точка входа основного метода в большинстве программ на C # статична? - PullRequest
37 голосов
/ 03 марта 2010

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

Ответы [ 8 ]

60 голосов
/ 03 марта 2010

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

16 голосов
/ 03 марта 2010

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

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

4 голосов
/ 03 марта 2010

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

1 голос
/ 03 марта 2010

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

1 голос
/ 03 марта 2010

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

0 голосов
/ 27 июля 2011

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

0 голосов
/ 03 марта 2010

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

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

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


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

0 голосов
/ 03 марта 2010

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

...