Может кто-то пожалуйста, подробно мне подробно следующий сценарий, было бы удобнее, если объяснение включает в себя выделение памяти и его ссылку для трех случаев:Почему поток выполнения следующих случаев был другим?
- Как поток выполняется в трех случаях?
- Почему поток отличается в трех случаях?
- Хотя существует круговая зависимость между двумя классами, почему один случай 1 выполняется, когда оставшиеся случаи были провалены?
случае, если один
namespace CircularDependency_1
{
class Program
{
static void Main(string[] args)
{
A a = new A();
Console.WriteLine("executed");
Console.ReadLine();
}
}
public class B
{
public static A a = new A();
public B()
{
Console.WriteLine("Creating B");
}
}
public class A
{
public static B b = new B();
public A()
{
Console.WriteLine("Creating A");
}
}
}
ВЫХОД
Creating A
Creating B
Creating A
executed
случае два
namespace CircularDependency_1
{
class Program
{
static void Main(string[] args)
{
A a = new A();
Console.WriteLine("executed");
Console.ReadLine();
}
}
public class B
{
public static A a;
public B()
{
a = new A();
Console.WriteLine("Creating B");
}
}
public class A
{
public static B b;
public A()
{
b = new B();
Console.WriteLine("Creating A");
}
}
}
OUTPUT Процесс прекращается из-за ошибки StackOverflowException.
ПРИМЕР ТРИ
namespace CircularDependency_1
{
class Program
{
static void Main(string[] args)
{
A a = new A();
Console.WriteLine("executed");
Console.ReadLine();
}
}
public class B
{
public A a;
public B()
{
a = new A();
Console.WriteLine("Creating B");
}
}
public class A
{
public B b;
public A()
{
b = new B();
Console.WriteLine("Creating A");
}
}
}
ВЫХОД Процесс завершен из-за StackOverflowException.
Почему вы добавили ярлык 'java'? – SomeDude
@svasa Я думаю, что вопрос скорее связан с OOPS, а не с языком. –
Я голосую, чтобы закрыть этот вопрос как не относящийся к теме, потому что [Вопросы, требующие помощи в домашней работе, должны содержать резюме работы, которую вы сделали до сих пор, чтобы решить проблема и описание трудности, с которой вы ее решаете] (http://stackoverflow.com/help/on-topic). – RealSkeptic