Даункинг: строительство деревьев

Я написал шип решение для базового класса построения дерева, который я создал.

Выход для первого "Добавление элемента № {0} на глубине {0}" - это элемент 0 на глубину 0, а не ожидаемый 0,1.

Это просто поразило меня, когда я писал это. Может ли это быть из-за моего даун-кастинга, хотя я отводил достаточно памяти на старте?

Код C#:

static void Main(string[] args)
{
    object HeadNode = 0;

    Console.WriteLine("Creating Head Node Filling Tree");
    HeadNode = new Node(0, 1,  HeadNode);
    ((Node)HeadNode).AddNode( HeadNode);
    ((Node)HeadNode).CountChildNodes();

    Console.ReadKey();
}

public struct Node
{
    List<Node> nodes;

    int nCount;
    int nDepth;
    int nNoChildren;
    object headNode;

    public Node(int count, int depth,  object head)
    {
        nodes = new List<Node>();
        nNoChildren = 0;
        nDepth = depth;
        nCount = count;
        headNode = head;
    }

    public int AddNode( object head)
    {
        while (nCount < 2 && nDepth < 3)
        {
            Console.WriteLine("Adding node to this object {0}", GetHashCode());
            Console.WriteLine("Adding Item No {0} at the depth of {0}", nCount, nDepth);
            nodes.Add(new Node(nodes.Count(), nDepth + 1,  headNode));
            nCount += 1;
            nodes[nodes.Count() - 1].AddNode(headNode);

        }
        return -1;
    }

1 ответ

"Выход для первого" Добавление элемента № {0} на глубину {0}"- это элемент 0 на глубину 0, а не ожидаемый 0,1".

Вы печатаете одно и то же значение дважды ({0} в двух разных местах), как ожидалось вывести два разных значения (0 и 1).

Я думаю, вы хотите это вместо этого:

Console.WriteLine("Adding Item No {0} at the depth of {1}", nCount, nDepth);

{0} будет заменено значением из 2-го параметра (nCount) а также {1} будет заменено значением из 3-го параметра (nDepth).

Другие вопросы по тегам