Я думаю, сохраняют его простым и не переделывают, думают он. Не делайте по краткому обзору и слою слишком много. Просто сохраните его аккуратным, и когда это растет, осуществление рефакторинг его тривиально. Одна из лучших функций IDE осуществляет рефакторинг, итак, почему бы не использовать его и сохранить Вас интеллектуальная мощь для решения проблем, которые связаны с Вашим приложением, скорее тогда meta проблемы как организация кода.
Функции-члены не имеют статическими; но если они не статические, это потребует от вас создания экземпляра объекта Program
для вызова метода-члена.
Со статическими методами:
public class Program
{
public static void Main()
{
System.Console.WriteLine(Program.Foo());
}
public static string Foo()
{
return "Foo";
}
}
Без статических методов (в другими словами, требуя создания экземпляра Program
):
public class Program
{
public static void Main()
{
System.Console.WriteLine(new Program().Foo());
}
public string Foo() // notice this is NOT static anymore
{
return "Foo";
}
}
Main
должен быть статическим, потому что в противном случае вам придется указать компилятору, как создать экземпляр класса Program
, который может быть, а может быть, и нетривиальной задачей.
Вы также можете писать нестатические методы, просто вы должны использовать вот так
static void Main(string[] args)
{
Program p = new Program();
p.NonStaticMethod();
}
Единственное требование для приложения C # - это то, что исполняемая сборка должна иметь один статический основной метод в любом классе сборки !
Метод Main является статическим, потому что это точка входа кода в сборку. Сначала нет экземпляра какого-либо объекта, только загруженный в память шаблон класса и его статические члены, включая статический метод точки входа Main. Main предопределен компилятором C # как точка входа.
Статический метод может вызывать только другие статические методы (если нет дескриптора экземпляра чего-либо, составленного для использования). Вот почему метод Main вызывает другие статические методы и почему вы получаете ошибку компиляции, если пытаетесь вызвать нестатический (экземплярный) метод.
Однако, если вы создаете экземпляр любого класса, даже класса Program сам, затем вы начинаете создавать объекты в своем приложении в области кучи памяти. Затем вы можете начать вызывать их члены экземпляра.
Не все методы должны быть статическими, вы можете добавить методы экземпляра, а также создать экземпляр своего класса Program.
Но для Main он должен быть статическим, потому что это точка входа в ваше приложение, и никто не собирается создавать экземпляр и вызывать его.
Итак, технически правильные ответы приведены выше :)
Я должен укажите, что обычно вы не Я не хочу идти в направлении всех статических методов. Создайте объект, такой как форма окна, контроллер для него и переходите к объектно-ориентированному коду вместо процедурного.