可以';t引用字段初始值设定项中的非静态对象
本文关键字:对象 静态 引用 字段 可以 | 更新日期: 2023-09-27 18:24:55
我写了这个代码:
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()
您不能像在这里那样访问字段初始值设定项中的非静态方法:
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;
将Form1_Shown
更改为:
private void Form1_Shown(object sender, EventArgs e)
{
t1 = new Thread(new ThreadStart(fun1));
t1.Start();
}
然后将t1
更改为:
public Thread t1;
并将ts
从您的类中完全删除。
错误在于,不能在字段初始值设定项中引用非静态的东西。这甚至包括其他类级别的字段。
为了澄清,字段初始化器是这样的:
public Thread t1 = new Thread(ts);
由于Thread t1
不是一个属性,并且是在类级别(方法之外)定义的,因此它是一个字段,并且它在声明中被初始化。它引用的是ts
,这是一个非静态字段,您不能这样做。