在C#中定义有界泛型类型参数

Mor*_*eza 9 c# generics clr bounded-types

在java中,可以绑定泛型类型的类型参数.它可以这样做:

class A<T extends B>{
...
}
Run Code Online (Sandbox Code Playgroud)

因此,此泛型类A的类型参数应为B或B的子类.

我想知道C#是否有类似的功能.如果有人让我知道,我很感激.

谢谢,

Bro*_*ass 18

C#中的相同内容是:

class A<T> where T : B
{

}
Run Code Online (Sandbox Code Playgroud)

另请参阅"类型参数约束"(msdn),以获得对约束的一般概述.


Jam*_*are 9

非常相似:

public class A<T> where T : B
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

这可以用于将T约束为B的子类或实现(如果B是接口).

此外,您可以将T约束为引用类型,值类型或要求默认构造函数:

where T : class     // T must be a reference type
where T : struct    // T must be a value type
where T : new()     // T must have a default constructor
Run Code Online (Sandbox Code Playgroud)