是否有表示数字的值类型共享的接口?

时间:2010-12-02 22:49:05

标签: c# generics

我希望能够创建具有可变精度的各种结构。例如:

public struct Point<T> where T : INumber
{
    public T X;
    public T Y;

    public static Point<T> operator +(Point<T> p1, Point<T> p2)
    {
        return new Point<T>
                   {
                       X = p1.X+p2.X,
                       Y = p1.Y+p2.Y
                   };
    }
}

我知道Microsoft通过创建两个结构来处理这个问题 - Point(对于整数)和PointF(对于浮点数),但是如果需要基于字节的点或双精度,那么你将需要复制很多旧代码,只需更改值类型。

2 个答案:

答案 0 :(得分:2)

有一个简单的原因你不能这样做:运算符是非虚拟的,即编译器必须在编译时知道 p1.X+p2.X是整数加法还是双加法。

答案 1 :(得分:0)

不,没有这样的界面。