我正在用C#编写一个RationalNumber类,并希望使它成为通用的,但只允许整数(int,byte,UInt32,我自己的BigInt类......)作为输入 - 拥有一个没有意义基于浮点数的有理数,甚至是像Control这样的常规对象。
但是,在声明类时我似乎不能过滤掉非整数类型。
我忽略了什么吗?
答案 0 :(得分:2)
不,你不能。
您还有另外一个问题,即没有arithmetic
约束。因此,没有静态类型的方法来使用类型参数的运算符。所以你需要使用较慢的动态(除非它们改进了自.net 3.5以来的运行时/抖动)。
一些具有类似问题的项目根本没有使该类具有通用性,而是使用代码生成器来专门化它。