C # Ссылка на объект требуется для нестатического поля - PullRequest
0 голосов
/ 20 февраля 2019

Я уже проверил подобные вопросы, такие как

CS0120: Ссылка на объект требуется для нестатического поля, метода или свойства 'foo'

Ссылка на объект требуется для нестатического поля, метода или свойства

Ссылка на объект требуется для метода или свойства нестатического поля

У меня есть следующий код в окне:

public partial class RegistrationWindow : Window
{
    ...
    ...

    public RegistrationWindow()
    {
        InitializeComponent();

        this.Loaded += Init;
    }

    private void Init(object sender, EventArgs e)
    {
        RegistrationFunctions.GotoStep(this, 1); // <-- here the error occurs
    }

}

, и у меня есть следующий класс:

public class RegistrationFunctions
{
    public void GotoStep(RegistrationWindow window, int step)
    {
         ...
         ...
    }
}

Я не использую какой-либоstatic класс или метод, но я все еще получаю следующую ошибку:

Требуется ссылка на объект для нестатического поля, метода или свойства ...

Почему я получаю эту ошибку, даже если у меня ничего нет static ??

1 Ответ

0 голосов
/ 20 февраля 2019

Почему я получаю эту ошибку, даже если у меня ничего нет static?

Вы получаете эту ошибку , потому что у вас нетесть что-нибудь static.Вы пытаетесь использовать метод static, который вы определили как метод экземпляра.Прямо здесь:

RegistrationFunctions.GotoStep(this, 1);

Вы не вызываете его из экземпляра, вы пытаетесь статически вызвать его из класса.У вас есть два варианта:

Вы можете сделать его статическим:

public static void GotoStep(RegistrationWindow window, int step)
{
     //...
}

или вы можете создать экземпляр вашего класса и вызвать метод для этого экземпляра:

var functions = new RegistrationFunctions();
functions.GotoStep(this, 1);

Какой правильный путь действительно зависит от вас, когда вы определяете семантику своей программы и решаете, что имеет смысл быть статичным, а что нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...