可能重复:
Define a generic that implements the + operator如何在C#泛型类型参数中强制支持一些运算符?
我最近工作的一个C#类库实现算法。关键是我希望库的用户能够选择算法应该使用的机器精度(单倍或双倍),并且我试图用泛型来实现。所以,举例来说:
Algorithm<double> a = new Algorithm<double>();
/** Some initializations here */
double result = a.Solve();
或
Algorithm<float> a = new Algorithm<float>();
/** Some initializations here */
float result = a.Solve();
因此,对于通用类的类型参数意味着是一个十进制数(因为在算法的代码,我需要用+,*, /, - ),但我不知道要对其施加哪种类型的约束。我曾想过与所有操作员建立一个界面,但不幸的是,这是不允许的。有任何想法吗?
否则,是否有可能在C#中获得类似于template specialization的东西?
谢谢
托马索
另一种可能性,而不是定义接口和类实现它们,你应该能够申报接口,并列出实现它们在接口声明的类。编译器应该照顾其余的 – devio 2010-09-07 14:42:15
@devio:听起来像是一个有趣的变体。你能给一些参考吗? – tunnuz 2010-09-08 07:44:59
@tunnuz没有“引用”,这是一个愿望,就像Jon的想法一样,并且应该在某人的下一个C#版本的愿望清单上;) – devio 2010-09-08 08:34:01