c# - 泛型 - 其中 T 是一个数字?

标签 c# generics numbers

<分区>

我正在尝试想办法为数字类型创建一个泛型类,以进行一些计算。

是否有我缺少的所有数字类型(int、double、float...)的通用接口(interface)???

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

更新:

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

最佳答案

您使用的是什么版本的 .NET?如果您使用的是 .NET 3.5,那么我有一个 generic operators implementationMiscUtil (免费等)。

这有类似 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/

相关文章:

c# - 用于 COM 和 CLR 的强类型集合

c# - 获取在RichTextBox中输入的最后一个词c#

java - Sun CodeModel 泛型方法

java - Gson非法类型变量引用

java - EclipseLink + JPA + 通用实体 + SINGLE_TABLE 继承

algorithm - 数字形成

mysql - 检查字符串是否包含数字

c# - 找不到方法 : 'System. String System.String.Format(System.IFormatProvider, System.String, System.Object)

c# - 带有附加条目的 Gridview

Java - 根据最小值、最大值和计数生成间隔/间隔