У меня есть следующий класс кода:
public class Foo
{
public Nested Bar { get; } = new Nested(this);
public class Nested
{
public Nested(Foo foo)
{
foo.DoSomething();
}
}
private void DoSomething()
{
}
}
Однако я получаю эту ошибку компиляции:
Ключевое слово 'this' недоступно в текущем контексте
Я могу исправить это, просто не используя Auto-Property Initializer и явно переместив его в конструктор:
public Nested Bar { get; }
public Foo()
{
this.Bar = new Nested(this);
}
Почему так? Не инициализатор автоисторического значения фактически переведен в код конструктора в IL?