Итак, возвращаюсь к программированию после долгого перерыва в работе сетевым администратором... и изучаю C# (и Unity) по ходу дела. Пытаюсь уложить в голове IEnumerable
и IEnumerator
Теперь вот пример кода класса, который я использую для тестирования/выяснения... он работает, рекурсивно создает узлы дерева/листа, однако я застрял в их извлечении
public class NodeTest : IEnumerable
{
public int Counter;
public List<NodeTest> children;
public NodeTest(int count)
{
Counter = count;
Debug.Log("Creating " + count);
NodeTest tmpNode;
if(count>1)
{
children = new List<NodeTest>();
tmpNode = new NodeTest(Counter - 1);
children.Add(tmpNode);
tmpNode = new NodeTest(Counter - 1);
children.Add(tmpNode);
}
}
public IEnumerator GetEnumerator()
{
foreach(NodeTest n in this.children)
{
yield return n;
}
}
}
Затем в другом месте я использую:
foreach(NodeTest nt in tstNode)
{
Debug.Log(nt.Counter);
}
Который отлично извлекает дочерние элементы верхнего узла, но не перебирает дочерние элементы, чтобы получить их дочерние элементы и т. д. Я предполагаю, что мне нужно сделать больше в методе IEnumerator
GetEnumerator
?