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

12

在Java中,可以绑定泛型类型的类型参数。可以像这样完成:

class A<T extends B> {
    ...
}

所以,这个泛型类A的类型参数应该是B或B的子类。我想知道C#是否有类似的功能。如果有人知道,请告诉我。谢谢!

4
我想是这样写的:class A<T> where T : B {...}。我有些时间没用了。 - asawyer
4个回答

23

C#中相同的写法是:

class A<T> where T : B
{

}

此外,可以参考"类型参数的限制条件"(msdn)的概述,了解约束条件的相关信息。


1
在我完成我的时候你比我快了几秒钟,MSDN链接+1。 - James Michael Hare

12

非常相似:

public class A<T> where T : B
{
    // ...
}

这可以用来约束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

3

3
当然可以:
class A<T> where T: B
{
    // ...
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接