我只是在这个网站上阅读其中一个帖子而且我看到了一些我不能理解的不寻常的类定义。有人可以解释一下这个定义的含义吗?
public class Node<T> where T : class
{
public Node<T> Next { get; set; }
public T Value { get; set; }
public Node(T value)
{
Next = null;
Value = value;
}
}
特别是在它说
的地方public class Node<T> where T : class
答案 0 :(得分:6)
它是一个泛型类定义,带有泛型参数T,其约束条件必须是T(引用类型)。
它实质上意味着,当您创建Node实例时,您可以执行
new Node<String>(someStringVar)
但你做不到
new Node<int>(someIntVar)
答案 1 :(得分:3)
它将Node
定义为generic class,其中T
泛型类型constrained仅用于引用类型。
答案 2 :(得分:3)
where T : class
表示T不能是struct
类型(包括int
等原始类型。)
答案 3 :(得分:1)
看起来你有一个链表节点,其中节点可以属于任何类。 T是泛型的说明符,其中T:class部分指定泛型的条件。在这种情况下,T必须是一个类。
答案 4 :(得分:1)
这称为泛型
where T : class
表示您提供的类型必须是类,不能使用基元类型。 (例如&lt; int&gt;)
这是定义名为Next
的{{1}}类型的对象。如果在创建此类的实例时提供了类型Node<T>
,则表示此属性为Size
。
Node<Size>
而且:
public Node<T> Next { get; set; }
与
相同public T Value { get; set; }
<强> See generics on MSDN 强>
答案 5 :(得分:1)
括号内的T
是泛型类型参数。我建议你阅读the introduction on genericity来解释它的优点和需求。
答案 6 :(得分:0)
T
是泛型类型参数。该定义指定了一个约束,其中T
只能是class
,而不是struct
。