Когда объект подвергается сборке мусора?

В c # объект подлежит сборке мусора, когда на него нет ссылок. Если предположить, что это так, будет ли когда-либо собираться одно из следующего или сборщик мусора достаточно умен, чтобы отбросить их обоих?

class Program
{
    static void Main()
    {
        A a = new A();
        a.b = new B();
        a.b.a = a;
        a = null;
    }

{

class A
{
    public B b;
}

class B
{
    public A a;
}

Ответы на вопрос(1)

Ваш ответ на вопрос