Как в static методе вызвать другой метод C#?

static void Main()
{
}

В методе Main нужно вызвать метод Setup

void Setup()
{
}

Как это сделать?


Ответы (2 шт):

Автор решения: Erake

Я создал ссылку на класс в котором находится метод Setup и вызвал его через ссылку

var p = new Program();
p.Setup();

Всё заработало.

→ Ссылка
Автор решения: Frehzy

1 способ (создание приватного метода внутри метода, доступ к которому будет ТОЛЬКО внутри самого метода Main)

static void Main()
{
    static void Setup()
    {
    }
}

2 способ:

static void Main()
{
    Setup();
}

static void Setup()
{
}

Почему ваш способ не совсем правильный - вы создаёте НОВЫЙ экземпляр класса, новую корзинку, которая занимает место в вашей тележке (памяти). Захотите обратиться снова к этому элементу - новая корзинка? Как-то звучит даже не очень.

Да, у нас есть гарбадж коллектор, который вызывает финалайз у всех элементов, ссылка на которые никуда не ведут, но...зачем?

А теперь представьте, что этот метод возвращает какие-то значения или устанавливает их для свойств в этом классе, которые где-то используются. При реализации, которую вы указали в ответе, вы не сможете получить доступ к этим элементам, потому что создали НОВЫЙ экземпляр класса.

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

→ Ссылка