3

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

我想添加一个方法bar()Foo但是这个方法应该只适用于Foo<int>

因为我们不能重载类型约束,
我是否必须在单独的static类中创建扩展方法bar(this Foo<int> myFoo)

4

1 回答 1

3

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

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

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

于 2012-07-16T20:42:28.790 回答