C#非静态字段需要对象引用

问题描述 投票:-4回答:1

我已经检查了类似的问题

CS0120: An object reference is required for the nonstatic field, method, or property 'foo'

An object reference is required for the nonstatic field, method, or property

an object reference is required for the nonstatic field method or property

我在窗口中有以下代码:

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,为什么我会收到此错误?

c# wpf static
1个回答
3
投票

即使我没有任何static,为什么我会收到此错误?

您收到此错误是因为您没有任何static。您正在尝试使用已定义为实例方法的static方法。就在这儿:

RegistrationFunctions.GotoStep(this, 1);

你没有从一个实例调用它,你试图从类中静态调用它。您有两种选择:

你可以把它变成静态的:

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

或者您可以创建类的实例并在该实例上调用该方法:

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

哪种方法是正确的,因为你定义程序的语义并决定什么是有意义的是静态的,什么不是。

© www.soinside.com 2019 - 2024. All rights reserved.