首页 文章

非静态字段,方法或属性需要对象引用

提问于
浏览
0

我使用下面的代码片段得到以下编译器错误:

非静态字段,方法或属性需要对象引用

在第5行,和

字段初始值设定项不能引用非静态字段,方法或属性

在第1行 checkerThreadStart

public Thread tC = new Thread(new ThreadStart(checker));

public static void checker()
{
    if (CheckServerState()) LabelWrite(true, Label1);
    else LabelWrite(false,Label1);
}

谁能解释为什么我会收到这些错误?

1 回答

  • 2

    在您的第一个代码片段中,我假设 Label1 是类的名称,而不是变量的名称 . 您需要实例化该类的对象 . 然后,您可以将该对象传递给 LabelWrite() 方法

    public static void checker()
    {
        Label1 label = new Label1();
        if (CheckServerState()) LabelWrite(true, label);
        else LabelWrite(false,label);
    }
    

    第二个编译器错误意味着当您在字段初始值设定项中将新的Thread对象分配给 tC 时,无法引用方法 checker() .

    您需要在构造函数中执行此操作:

    public Thread tC;
    
    public MyClass()
    {
        tC = new Thread(new ThreadStart(checker));
    
    }
    
    public void checker()
    {
        if (CheckServerState()) LabelWrite(true, Label1);
        else LabelWrite(false,Label1);
    }
    

相关问题