我被赋予了一项任务,该任务涉及(强调涉及,它不仅仅是制作一个将数据保存在树结构中的程序)制作一个保存数据的树结构,但确定如何做到这一点我查了一下。
在教程中,我正在阅读作者提供的代码,但它假设你对 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
,它可以让您在类的直系祖先中调用构造函数。