了解一些C#代码

Los*_*ost 3 c# oop data-structures

我只是在这个网站上阅读其中一个帖子而且我看到了一些我不能理解的不寻常的类定义.有人可以解释一下这个定义是什么意思吗?

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;    
  } 
} 
Run Code Online (Sandbox Code Playgroud)

特别是它说的地方

public class Node<T> where T : class
Run Code Online (Sandbox Code Playgroud)

Bal*_*a R 6

它是一个泛型类定义,带有泛型参数T,其约束条件必须是T(引用类型).

它实质上意味着,当您创建Node实例时,您可以这样做

new Node<String>(someStringVar)
Run Code Online (Sandbox Code Playgroud)

但你做不到

new Node<int>(someIntVar)
Run Code Online (Sandbox Code Playgroud)