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

时间:2019-02-20 12:05:29

标签: c# wpf static

我已经检查了类似的问题

  

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,为什么会出现此错误?

1 个答案:

答案 0 :(得分:3)

  

即使我一无所有static,为什么也收到此错误?

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

RegistrationFunctions.GotoStep(this, 1);

您不是从实例中调用它,而是试图从类中静态调用它。您有两种选择:

您可以将其设为静态:

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

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

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

在定义程序的语义并确定什么是静态的,什么不是静态的时,哪种方法才是真正由您决定的。