Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#模板专门化_C#_Generics - Fatal编程技术网

c#模板专门化

c#模板专门化,c#,generics,C#,Generics,我可以: X类 其中T:EventArgs { } X类 其中T:异常 { } 在C#?中,没有,因为这两个类别确实有相同的名称 您想做什么?您不能对泛型约束使用相同的类名 您可以使用基类作为约束,但约束意味着您只能使用派生类—在您的示例中,第一个示例中只能使用从EventArgs派生的类,第二个示例中只能使用从expetion派生的类 有关类型参数的约束,请参见。如果您指的是同一命名空间中具有相同名称的两个类,具有不同的泛型类型参数,则否,则不能 where子句中只能有一个类。你可以使用 S

我可以:

X类
其中T:EventArgs
{
}
X类
其中T:异常
{
}

在C#?

中,没有,因为这两个类别确实有相同的名称


您想做什么?

您不能对泛型约束使用相同的类名

您可以使用基类作为约束,但约束意味着您只能使用派生类—在您的示例中,第一个示例中只能使用从
EventArgs
派生的类,第二个示例中只能使用从
expetion
派生的类


有关类型参数的约束,请参见。

如果您指的是同一命名空间中具有相同名称的两个类,具有不同的泛型类型参数,则,则不能

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

System.Runtime.InteropServices.\u异常

接口来接受异常(但这将是一个丑陋的黑客行为)


如果你把它们放在不同的名称空间中,你可以。

你实际上想要实现什么还不太清楚。-1-如果你没有阅读文档,C#没有模板,它有泛型。有一个明显的区别——这使得专业化不可能。好的一点,他可能想像C++一样做模板。很高兴它没有得到支持,但这让事情变得很痛苦。我读了文档,不用担心。我仍然想要专业化,在C++中看到它,喜欢它…我可以从一个公共接口派生,并获得一些非常接近的东西,实际上……正是我想要的,一个类用于从一个类派生的T,另一个类用于从另一个类派生的T
    class X<T>
        where T : EventArgs
    {

    }

    class X<T>
        where T:Exception
    {

    }