public class Node
{
public Node Left;
public Node Right;
public object Value;
public int TotalNodeCount =>
1 + (Left?.TotalNodeCount ?? 0) + (Right?.TotalNodeCount ?? 0);
}
Создаю экземпляр класса:
var s = new Node();
s.Left = s;
При попытке в дебагере посмотреть, что же получилось - приложение закрывается с невнятной ошибкой (я так полагаю, где-то внутри стэковерфлоу).
Вопрос такой - как правильно сделать и какую статью почитать вот по таким циклическим ссылкам?
Естественно выпадает StackOverflow.
Сам по себе Node не может знать, встречался ли уже этот экземпляр ранее или нет. Поэтому придётся использовать какую-нибудь коллекцию и передавать её дальше, чтобы циклически проверять: был ли этот экземпляр ранее или нет. Для данной задачи достаточно HashSet.
public class Node
{
public Node Left;
public Node Right;
public object Value;
public int TotalNodeCount =>
totalNodeCount(new HashSet<Node>());
private int totalNodeCount(HashSet<Node> nodes)
{
if (nodes.Add(this))
return 1 + (Left?.totalNodeCount(nodes) ?? 0) + (Right?.totalNodeCount(nodes) ?? 0);
else
return 0;
}
}
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть большое количество цветовНужно одновременно поменять абсолютно все цвета(и сделать это не один раз)
Я по книге Unity in Action, изучал главу 7, не знаю то ли я что то не правильно делаю то ли баг в книгеВообщем то Character Controller цепляется за объекты и получается...
При прохождении уровня игрока должно перекидывать на следующий (Случайно выбирает одну из сцен)Также нужно что бы некоторые сцены могли...