向下铸造:树形结构

本文关键字:结构 | 更新日期: 2023-09-27 17:49:30

我为自己创建的基本树构建类编写了一个spike解决方案。

第一个"添加深度为{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;
    }

向下铸造:树形结构

"第一个"添加深度为{0}的Item No{0}"的输出是Item 0深度0,而不是预期的0,1."

你打印了两次相同的值({0}在两个不同的地方),它是如何期望打印两个不同的值(0和1)的

我猜你想要这个代替:

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

{0}将替换为第二个参数(nCount)的值,{1}将替换为第三个参数(nDepth)的值。