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

StackOverflow https://stackoverflow.com/questions/2366952

  •  23-09-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

Другие советы

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

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

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

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

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

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

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

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


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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top