我希望能够创建具有可变精度的各种结构。例如:
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
(对于浮点数),但是如果需要基于字节的点或双精度,那么你将需要复制很多旧代码,只需更改值类型。
答案 0 :(得分:2)
有一个简单的原因你不能这样做:运算符是非虚拟的,即编译器必须在编译时知道 p1.X+p2.X
是整数加法还是双加法。
答案 1 :(得分:0)
不,没有这样的界面。