一尘不染

泛型-T在哪里?

c#

我试图找到一种方法来创建仅用于数字类型的通用类,以进行一些计算。

我缺少所有数字类型(int,double,float …)的通用接口吗???

如果没有,那么创建此类的最佳方法是什么?

更新:

我要实现的主要目的是检查谁是两个T类型变量之间的较大者。


阅读 240

收藏
2020-05-19

共1个答案

一尘不染

您正在使用什么版本的.NET?如果您使用的是.NET
3.5,那么我在MiscUtil(免费等)中有一个通用的运算符实现

它具有T Add<T>(T x, T y),和类似的方法,以及用于对不同类型(如DateTime + TimeSpan)进行算术运算的其他变量。

此外,这适用于所有内置,提升和定制的操作员,并缓存代表以提高性能。

为什么这是棘手的一些其他背景在这里

您可能还想知道dynamic(4.0)排序也间接解决了此问题-即

dynamic x = ..., y = ...
dynamic result = x + y; // does what you expect

重新对评论</ >-你实际上并不 需要 为这个运营商; 您只需:

T x = ..., T y = ...
int c = Comparer<T>.Default.Compare(x,y);
if(c < 0) {
    // x < y
} else if (c > 0) { 
    // x > y
}
2020-05-19