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



我被赋予了一项任务,该任务涉及(强调涉及,它不仅仅是制作一个将数据保存在树结构中的程序)制作一个保存数据的树结构,但确定如何做到这一点我查了一下。

在教程中,我正在阅读作者提供的代码,但它假设你对 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;
            }
        }
    }
}

代码如何在类中链接在一起的一般解释也将不胜感激,但如果没有,我想我能够弄清楚。

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

var node = new Node<string>();

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

泛型在StackOverflow帖子中是一个相当大的主题,所以我建议你阅读这个。MSDN有一个很好的指南,你可以在这里阅读。

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

在您的情况下,它调用this的事实意味着构造函数位于同一实例中。您还会遇到base,它可以让您在类的直系祖先中调用构造函数。

最新更新