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

C#无法访问静态上下文中的非静态成员字段,而实际上不在静态上下文中,c#,static,C#,Static,有人能解释我为什么会出错吗 “无法在静态上下文中访问非静态字段wtf,即使我不在静态上下文中 我在“public int variable=wtf.queuePosition;" 虽然我不是在一个静态的环境中 实例成员变量的初始化是在执行构造函数的代码之前完成的。此时,仍然没有this引用 所以我恐怕你错了。从编译器的角度来看,你处于一个静态环境中 从: 实例字段的变量初始值设定项无法引用正在创建的实例。因此,引用该实例是编译时错误 这是变量初始值设定项中的错误,因为变量初始值设定项通过简单名称

有人能解释我为什么会出错吗 “无法在静态上下文中访问非静态字段wtf,即使我不在静态上下文中

我在“public int variable=wtf.queuePosition;"

虽然我不是在一个静态的环境中

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

所以我恐怕你错了。从编译器的角度来看,你处于一个静态环境中

从:

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


您正在将变量赋值给另一个变量中的属性值。您的变量wtf是非静态的,但是类中的变量赋值是静态的。因此赋值“public int variable=wtf.queuePosition;”在静态上下文中


您的示例中显示了一个明显的不允许此操作的原因。您的代码很快就会出现堆栈溢出异常。由于每个测试实例都会新建另一个测试实例,这将新建另一个…

wtf是测试类的一个实例-我为其显示了代码:),您无法从v初始化一个字段字段初始值设定项中不同字段的值。您需要将该代码移动到构造函数中。”静态上下文“简单地说就是禁止您访问实例成员。字段初始值设定项是静态上下文:您不能在
public int variable=wtf.queuePosition如果要初始化变量,则必须在构造函数中进行初始化(您到底想实现什么?)静态成员!=静态上下文,正如stuard所评论的,字段初始值设定项(public int variable=wtf.queuePosition;)是静态上下文
class Test
{

    public Test wtf = new Test();
    public int variable = wtf.queuePosition;

    private int queuePosition;
    public Test()
    {
        queuePosition = 5;
    }
}