【问题标题】:Defining bounded generic type parameter in C#在 C# 中定义有界泛型类型参数
【发布时间】:2012-03-29 20:44:19
【问题描述】:

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

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

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

我想知道 C# 是否有类似的功能。如果有人让我知道,我将不胜感激。

谢谢

【问题讨论】:

  • class A&lt;T&gt; where T : B {...} 我想。已经有一段时间了。

标签: c# generics clr bounded-types


【解决方案1】:

在C#中也是:

class A<T> where T : B
{

}

另请参阅"Constraints on Type Parameters" (msdn),了解一般约束的概览。

【讨论】:

  • 在我完成我的过程中击败我几秒钟,为 MSDN 链接 +1。
【解决方案2】:

非常相似:

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】:

    当然可以:

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

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多