c#模板专业化

时间:2010-06-30 07:23:56

标签: c# generics

我可以:

    class X<T>
        where T : EventArgs
    {

    }

    class X<T>
        where T:Exception
    {

    }
在C#中

3 个答案:

答案 0 :(得分:1)

您不能对通用约束使用相同的类名。

您可以使用基类作为约束,但约束则意味着您只能使用派生类 - 在您的示例中,只使用在第一个示例中派生自EventArgs的类和从{{1派生的派生类}} 在第二。

有关类型参数的约束,请参阅documentation

答案 1 :(得分:0)

不,因为这两个类的名称相同。

你想做什么?

答案 2 :(得分:0)

如果您指的是同一名称空间中具有不同泛型类型参数的同名的2个类 - 那么,则不能!

where 子句中只能有一个类。你可以使用

  

System.Runtime.InteropServices._Exception

接受例外的接口(虽然这将是一个丑陋的黑客)。

如果将它们放在不同的命名空间中,则可以。