<分区>
我正在尝试想办法为数字类型创建一个泛型类,以进行一些计算。
是否有我缺少的所有数字类型(int、double、float...)的通用接口(interface)???
如果没有,创建此类的最佳方法是什么?
更新:
我想要实现的主要目的是检查两个类型 T 的变量之间谁更大。
<分区>
我正在尝试想办法为数字类型创建一个泛型类,以进行一些计算。
是否有我缺少的所有数字类型(int、double、float...)的通用接口(interface)???
如果没有,创建此类的最佳方法是什么?
更新:
我想要实现的主要目的是检查两个类型 T 的变量之间谁更大。
最佳答案
您使用的是什么版本的 .NET?如果您使用的是 .NET 3.5,那么我有一个 generic operators implementation在 MiscUtil (免费等)。
这有类似 T Add<T>(T x, T y)
的方法,以及不同类型算术的其他变体(如 DateTime + TimeSpan
)。
此外,这适用于所有内置、提升和定制的运算符,并缓存委托(delegate)以提高性能。
关于为什么这很棘手的一些额外背景是 here .
您可能还想知道 dynamic
(4.0) 也间接解决了这个问题——即
dynamic x = ..., y = ...
dynamic result = x + y; // does what you expect
回复关于<
的评论/>
- 您实际上并不需要运算符(operator);你只需要:
T x = ..., T y = ...
int c = Comparer<T>.Default.Compare(x,y);
if(c < 0) {
// x < y
} else if (c > 0) {
// x > y
}
关于c# - 泛型 - 其中 T 是一个数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1267902/