Сегодня я пытался обернуть голову вокруг неизменяемых объектов, которые ссылаются друг на друга. Я пришел к выводу, что вы не можете этого сделать без ленивой оценки, но в процессе я написал этот (на мой взгляд) интересный код.
public class A
{
public string Name { get; private set; }
public B B { get; private set; }
public A()
{
B = new B(this);
Name = "test";
}
}
public class B
{
public A A { get; private set; }
public B(A a)
{
//a.Name is null
A = a;
}
}
Интересно, что я не могу придумать другой способ наблюдения объекта типа A в состоянии, которое еще не полностью сконструировано и включает в себя потоки. Почему это даже справедливо? Существуют ли другие способы наблюдения за состоянием объекта, который не полностью сконструирован?