如果我想要一个只接受重载运算符的类型的泛型方法,例如减法运算符,我该怎么办?我尝试使用接口作为约束,但接口不能有运算符重载.
实现这一目标的最佳方法是什么?
可能重复:
定义实现+运算符的泛型
我最近在研究一个实现算法的C#类库.关键是我希望库的用户能够选择算法应该使用的机器精度(单或双),并且我正在尝试使用泛型.所以,例如:
Algorithm<double> a = new Algorithm<double>();
/** Some initializations here */
double result = a.Solve();
Run Code Online (Sandbox Code Playgroud)
要么
Algorithm<float> a = new Algorithm<float>();
/** Some initializations here */
float result = a.Solve();
Run Code Online (Sandbox Code Playgroud)
因此,泛型类的类型参数意味着是十进制数(因为在算法代码中我需要使用+,*,/, - ),但我不知道对它施加哪种类型约束.我已经考虑过与所有运营商建立接口,但不幸的是,这是不允许的.有任何想法吗?
否则,是否有可能在C#中获得类似于C++中的模板特化的东西?
谢谢
托马索
我正在努力寻找以下的最佳方式:
我有两个对象,对象A和B.在程序的某个点上,我知道A和B的类型是int,double或float.我想对它们做一个补充,所以A + B = C.C将按照我们习惯的方式输入,同时在整数,浮点数和双精度之间进行加法.
例如,如果A为int且B为float.然后C将浮动.