了解一些c#代码
本文关键字:代码 了解 | 更新日期: 2023-09-27 17:53:59
我正在阅读这个网站上的一个线程,我看到了一些不寻常的类定义,我不能很好地理解。谁能给我解释一下这个定义是什么意思?
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
这是一个泛型类定义,具有泛型形参T,并且T必须是类(引用类型)的约束。
意思是,当你创建Node的实例时,你可以做
new Node<String>(someStringVar)
但是你不能做
new Node<int>(someIntVar)
它将Node
定义为泛型类,其中T
泛型类型仅约束为引用类型
where T : class
表示T不能是struct
类型(包括int
等基本类型)。
看起来您有一个链表节点,其中节点可以是任何类。T是泛型的说明符,其中T: class部分指定泛型的条件。在本例中,T必须是一个类。
这叫做泛型
where T : class
意味着您提供的类型必须是一个类,您不能使用基本类型。(如& lt;int>)
定义了一个类型为Node<T>
的对象Next
。如果在创建该类的实例时提供了类型Size
,则表示该属性将为Node<Size>
。
public Node<T> Next { get; set; }
:
public T Value { get; set; }
与
相同public Size Value { get; set; }
参见MSDN泛型
括号内的T
是泛型类型参数。我建议你阅读通用性的介绍,了解它的优点和需要。
T
是泛型类型参数。该定义指定了一个约束,其中T
只能是class
,而不能是struct
。