Понятно, что в рамке можно было бы указать, что вместо использования определенного статического метода для запуска программы он вместо этого построит экземпляр по умолчанию для определенного класса и выполнит на нем определенный метод. Если бы у кого-то была структура, в которой реализованы статические методы, если они были экземплярами экземпляра экземпляра singleton с инициализацией компилятора, такой подход может быть вполне разумным, так как инфраструктуре придется генерировать новый экземпляр объекта до вызова основной функции в любом случае ,
Если вызов статического метода «проще», чем создание экземпляра нового объекта и вызов метода на нем, тем не менее, нет никакой пользы для того, чтобы требовать, чтобы структура использовала более дорогой курс действий. Любой код, который хочет использовать последний подход был бы совершенно свободно использовать:
public static void Main([[params]])
{
var mainObject = new MainObject();
mainObject.Main([[params]]);
}
Там могут быть некоторые потенциальные выгоды с системой включают свой собственный статический метод, который выглядел что-то вроде:
public static void SysMain([[params]])
{
using (Application app = new UserApp([[params]])) // UserApp derives from Application
{
app.Start(); // Virtual method
app.AllowNext(); // Base method--see text
app.Run(); // Abstract method
}
}
где app.AllowNext()
был способом координировать работу с другими экземплярами приложений, запущенными, по существу, в одно и то же время, чтобы гарантировать, что повторные попытки запуска приложения в фоновом режиме будут обрабатывать их вызовы Start
строго последовательно. Однако при отсутствии такой схемы координации очень мало пользы от необходимости требовать, чтобы структура создавала объект приложения перед его запуском. Стоимость не будет огромной, но без какой-либо потенциальной опознаваемой выгоды нет смысла принимать даже тривиальные затраты.
Аналогичный вопрос был задан о java, и я думаю, что ответы также применимы и здесь: http://stackoverflow.com/questions/146576/why-is-the-java-main-matic-static – Tudor
Неясно, спрашиваю, потому что вы не понимаете, что означает 'static' * вообще *, или это конкретно вокруг' Main'. –