了解一些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

了解一些c#代码

这是一个泛型类定义,具有泛型形参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