通用只允许整数作为类型参数

时间:2010-11-07 16:06:10

标签: c# generics integer

我正在用C#编写一个RationalNumber类,并希望使它成为通用的,但只允许整数(int,byte,UInt32,我自己的BigInt类......)作为输入 - 拥有一个没有意义基于浮点数的有理数,甚至是像Control这样的常规对象。

但是,在声明类时我似乎不能过滤掉非整数类型。

我忽略了什么吗?

1 个答案:

答案 0 :(得分:2)

不,你不能。

您还有另外一个问题,即没有arithmetic约束。因此,没有静态类型的方法来使用类型参数的运算符。所以你需要使用较慢的动态(除非它们改进了自.net 3.5以来的运行时/抖动)。

一些具有类似问题的项目根本没有使该类具有通用性,而是使用代码生成器来专门化它。