我有以下的代码类:
public class Foo
{
public Nested Bar { get; } = new Nested(this);
public class Nested
{
public Nested(Foo foo)
{
foo.DoSomething();
}
}
private void DoSomething()
{
}
}
然而,我遇到了这个编译错误:
关键字“this”在当前上下文中不可用
我可以通过简单地不使用自动属性初始化器,而是显式地将其移入构造函数来解决它:
public Nested Bar { get; }
public Foo()
{
this.Bar = new Nested(this);
}
为什么会这样?难道自动属性初始化器不是实际上被翻译成IL中的构造函数代码吗?