Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 非静态字段、方法或属性需要对象引用_C#_Oop - Fatal编程技术网

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

C# 非静态字段、方法或属性需要对象引用,c#,oop,C#,Oop,以下代码片段导致以下编译器错误: 非静态字段、方法或对象需要对象引用 财产 在第5行中,以及 字段初始值设定项不能引用非静态字段、方法或 财产 在ThreadStart中的checker处的第1行中: public Thread tC = new Thread(new ThreadStart(checker)); public static void checker() { if (CheckServerState()) LabelWrite(true, Label1); el

以下代码片段导致以下编译器错误:

非静态字段、方法或对象需要对象引用 财产

在第5行中,以及

字段初始值设定项不能引用非静态字段、方法或 财产

ThreadStart
中的
checker
处的第1行中:

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

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

谁能解释一下我为什么会出现这些错误吗?

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

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

第二个编译器错误意味着在字段初始值设定项中将新线程对象分配给
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);
}