我被赋予了一个涉及的任务(强调涉及,它不仅仅是创建一个保存树结构数据的程序),创建一个保存数据的树结构,但确定如何这样做,我查了一下。
在教程中,我正在阅读作者提供的代码,但它假设您对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;
}
}
}
}
关于如何将代码链接在一起的一般解释也会受到赞赏,但如果没有,我想我能够弄明白。
答案 0 :(得分:1)
<T>
表示它是一个可以传递类型的泛型类。例如,您可以像这样构建Node
类的实例:
var node = new Node<string>();
编译器然后将T
的所有实例视为string
。它允许您重用多种不同类型的代码。
泛型是StackOverflow帖子中的一个很大的主题,所以我建议你阅读这篇文章。 MSDN有一个很好的指南,你可以阅读here。
public Node(T data) : this(data, null) {}
中的冒号允许您链接构造函数。
在你的情况下,它调用this
的事实意味着构造函数在同一个实例中。你也会遇到base
,它可以让你在类的直接祖先中调用构造函数。