我正在从事一个项目,我将在其中使用多种类型的数学值,例如分数、十进制数和数学常数(即 pi,欧拉数)。
我用这段代码创建了一个抽象基类,每个类型都将从中继承。
public abstract class MathValue
{
public abstract double Value { get; set; }
protected bool irrational;
public virtual bool IsIrrational
{
get { return this.irrational; }
}
public virtual T ToValueType<T>(bool ignoreConstraints) where T : MathValue;
public abstract MathValue Add<TParam>(TParam val) where TParam : MathValue;
public abstract MathValue Subtract<TParam>(TParam val) where TParam : MathValue;
public abstract MathValue Multiply<TParam>(TParam val) where TParam : MathValue;
public abstract MathValue Divide<TParam>(TParam val) where TParam : MathValue;
}
但是我现在质疑在这里使用泛型方法是否合适,或者我是否应该在每个派生类中用重载方法替换这些方法。
在这种情况下哪个更合适?