Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.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# Can';t从字段初始值设定项引用非静态对象_C# - Fatal编程技术网

C# Can';t从字段初始值设定项引用非静态对象

C# Can';t从字段初始值设定项引用非静态对象,c#,C#,我写了这段代码: public partial class Form1 : Form { ThreadStart ts = new ThreadStart(fun1); public Thread t1 = new Thread(ts); public void fun1() { DA da = new DA(); string q = "select * from G5_table order by State";

我写了这段代码:

public partial class Form1 : Form
{
    ThreadStart ts = new ThreadStart(fun1);
    public Thread t1 = new Thread(ts);
    public void fun1()
    {
        DA da = new DA();

        string q = "select * from G5_table order by State";

        DataTable dt = da.Select(q);
        foreach (DataRow item in dt.Rows)
        {
            richtxtboxEN.Text = item["Word_en"].ToString();
            mode = 1;
            richtxtboxEN.TextChanged += new EventHandler(richtxtboxEN_TextChanged);
        }
    }
    private void Form1_Shown(object sender, EventArgs e)
    {     
        t1.Start();
    }
}
但我有一个错误
字段初始值设定项无法引用非静态字段、方法或属性“G5.Form1.fun1()”

请将所示的
表单更改为:

private void Form1_Shown(object sender, EventArgs e)
{   
    t1 = new Thread(new ThreadStart(fun1));  
    t1.Start();
}
public Thread t1;
然后将
t1
更改为:

private void Form1_Shown(object sender, EventArgs e)
{   
    t1 = new Thread(new ThreadStart(fun1));  
    t1.Start();
}
public Thread t1;
并将
ts
从您的课程中完全删除

错误在于不能在字段初始值设定项中引用非静态内容。甚至还包括其他类级字段

为了澄清,字段初始值设定项是:

public Thread t1 = new Thread(ts);

由于
线程t1
不是一个属性,而是在类级别(在方法之外)定义的,因此它是一个字段,并且在声明中正被初始化。它引用的是非静态字段
ts
,您不能这样做。

您不能像这里这样访问字段初始值设定项中的非静态方法:

ThreadStart ts = new ThreadStart(fun1);
您将需要定义一个构造函数,如下所示:

public partial class Form1 : Form
{
    public Form1()
    {
        ts = new ThreadStart(fun1);
        t1 = new Thread(ts);
    }

    ThreadStart ts;
    public Thread t1;

这个错误和标题之间有什么联系?5分钟前发布的我的答案有什么问题?你说的完全一样。