【发布时间】:2016-06-24 16:09:34
【问题描述】:
谁能解释我为什么会收到这个错误 “即使我不在静态上下文中,也无法在静态上下文中访问非静态字段 wtf。
我在“public int variable = wtf.queuePosition;”这一行得到错误
class Test
{
public Test wtf = new Test();
public int variable = wtf.queuePosition;
private int queuePosition;
public Test()
{
queuePosition = 5;
}
}
【问题讨论】:
-
wtf 是 Test 类的一个实例——我已经展示了它的代码:)
-
您不能从字段初始化程序中不同字段的值初始化一个字段。您需要将该代码移至构造函数。 “静态上下文”仅仅意味着你被禁止访问实例成员。
-
字段初始值设定项是静态上下文:您不能像在
public int variable = wtf.queuePosition;中那样分配成员 -
如果你想初始化变量,你必须在构造函数中进行(你到底想达到什么目的?)
-
static member != static context 并且正如 stuard 所评论的,字段初始化器(public int variable = wtf.queuePosition;)是一个静态上下文