解释一些代码[二叉树,节点]

时间:2014-02-21 12:28:51

标签: c# data-structures tree

我被赋予了一个涉及的任务(强调涉及,它不仅仅是创建一个保存树结构数据的程序),创建一个保存数据的树结构,但确定如何这样做,我查了一下。

在教程中,我正在阅读作者提供的代码,但它假设您对C#有所了解(它说明了但不是在多大程度上,我相信我的理解低于作者的意思)。

我想向我解释的代码:

public class Node<T>

为什么上面的代码中有<T>?这是什么意思?它有什么作用?它如何影响课程(请参阅全班以获得进一步的见解)。我假设它链接到下面的代码?


private T data;

public Node(T data) : this(data, null) {}

以上代码是否过载?冒号(:)对代码做了什么?


班上的所有代码:

public class Node<T>
{
        // Private member-variables
        private T data;
        private NodeList<T> neighbors = null;

        public Node() {}
        public Node(T data) : this(data, null) {}
        public Node(T data, NodeList<T> neighbors)
        {
            this.data = data;
            this.neighbors = neighbors;
        }

        public T Value
        {
            get
            {
                return data;
            }
            set
            {
                data = value;
            }
        }

        protected NodeList<T> Neighbors
        {
            get
            {
                return neighbors;
            }
            set
            {
                neighbors = value;
            }
        }
    }
}

关于如何将代码链接在一起的一般解释也会受到赞赏,但如果没有,我想我能够弄明白。

1 个答案:

答案 0 :(得分:1)

<T>表示它是一个可以传递类型的泛型类。例如,您可以像这样构建Node类的实例:

var node = new Node<string>();

编译器然后T的所有实例视为string。它允许您重用多种不同类型的代码。

泛型是StackOverflow帖子中的一个很大的主题,所以我建议你阅读这篇文章。 MSDN有一个很好的指南,你可以阅读here

public Node(T data) : this(data, null) {}中的冒号允许您链接构造函数。

在你的情况下,它调用this的事实意味着构造函数在同一个实例中。你也会遇到base,它可以让你在类的直接祖先中调用构造函数。