c#: консольное приложение - статические методы

Я думаю, сохраняют его простым и не переделывают, думают он. Не делайте по краткому обзору и слою слишком много. Просто сохраните его аккуратным, и когда это растет, осуществление рефакторинг его тривиально. Одна из лучших функций IDE осуществляет рефакторинг, итак, почему бы не использовать его и сохранить Вас интеллектуальная мощь для решения проблем, которые связаны с Вашим приложением, скорее тогда meta проблемы как организация кода.

44
задан Arsen Mkrtchyan 6 November 2009 в 06:03
поделиться

5 ответов

Функции-члены не имеют статическими; но если они не статические, это потребует от вас создания экземпляра объекта 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 , который может быть, а может быть, и нетривиальной задачей.

63
ответ дан 26 November 2019 в 21:53
поделиться

Вы также можете писать нестатические методы, просто вы должны использовать вот так

static void Main(string[] args)
{
    Program p = new Program();
    p.NonStaticMethod();
}

Единственное требование для приложения C # - это то, что исполняемая сборка должна иметь один статический основной метод в любом классе сборки !

24
ответ дан 26 November 2019 в 21:53
поделиться

Метод Main является статическим, потому что это точка входа кода в сборку. Сначала нет экземпляра какого-либо объекта, только загруженный в память шаблон класса и его статические члены, включая статический метод точки входа Main. Main предопределен компилятором C # как точка входа.

Статический метод может вызывать только другие статические методы (если нет дескриптора экземпляра чего-либо, составленного для использования). Вот почему метод Main вызывает другие статические методы и почему вы получаете ошибку компиляции, если пытаетесь вызвать нестатический (экземплярный) метод.

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

11
ответ дан 26 November 2019 в 21:53
поделиться

Не все методы должны быть статическими, вы можете добавить методы экземпляра, а также создать экземпляр своего класса Program.
Но для Main он должен быть статическим, потому что это точка входа в ваше приложение, и никто не собирается создавать экземпляр и вызывать его.

5
ответ дан 26 November 2019 в 21:53
поделиться

Итак, технически правильные ответы приведены выше :)

Я должен укажите, что обычно вы не Я не хочу идти в направлении всех статических методов. Создайте объект, такой как форма окна, контроллер для него и переходите к объектно-ориентированному коду вместо процедурного.

1
ответ дан 26 November 2019 в 21:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: