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

本文关键字:泛型类型参数 定义 | 更新日期: 2023-09-27 18:29:22

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

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

因此,这个A的泛型类的类型参数应该是B或B的子类。

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

感谢

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

C#中相同的是:

class A<T> where T : B
{
}

另请参阅"类型参数上的约束"(msdn),以了解约束的一般概述。

非常相似:

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

当然可以:

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

是的,你可以这样做,它被称为类型约束。这里有一篇文章解释了如何:

http://msdn.microsoft.com/en-us/library/d5x73970.aspx