C#不能在静态上下文中访问非静态成员字段,而实际上不在静态上下文中

Kob*_*bek 2 c# static

谁能解释为什么我收到错误“无法在静态上下文中访问非静态字段 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

Ren*_*ogt 7

虽然我不在静态上下文中。

实例成员变量的初始化在执行构造函数的代码之前完成。此时,仍然没有this参考。

所以我怕你错了。但从编译器的时候,你在静态环境。

C# 规范(17.4.5.2 实例字段初始化)

实例字段的变量初始值设定项不能引用正在创建的实例。因此,在变量初始值设定项中引用 this 是编译时错误,因为变量初始值设定项通过简单名称引用任何实例成员是编译时错误。