如果我想将类型约束(T = int)方法添加到泛型(T)类中,是否必须创建扩展方法?

时间:2012-07-16 14:30:13

标签: c# generics extension-methods

例如,我有一个(non-static)类Foo<T>

我想为bar()添加方法Foo,但此方法仅适用于Foo<int>

因为我们不能超载类型约束,
我是否必须在单独的staticbar(this Foo<int> myFoo)

中创建扩展方法

1 个答案:

答案 0 :(得分:3)

基本上,是的。 C#(以及一般的CLR)不支持C ++中已知的模板特化。

当您的类实现根本不关心实际类型时,可以使用类型参数。

作为替代方案,添加运行时检查以确保仅在typeof(T) == typeof(int)上调用该方法。