下面的代码重复性很强:
public static double Interpolate(double x1, double y1, double x2, double y2, double x)
{
return y1 + (x - x1) * (y2 - y1) / (x2 - x1);
}
public static decimal Interpolate(decimal x1, decimal y1, decimal x2, decimal y2, decimal x)
{
return y1 + (x - x1) * (y2 - y1) / (x2 - x1);
}
但是,我尝试使用泛型并没有编译:
public static T Interpolate<T>(T x1, T y1, T x2, T y2, T x)
{
return y1 + (x - x1) * (y2 - y1) / (x2 - x1);
}
错误信息如下:
错误 2 运算符 '-' 不能应用于 'T' 和 'T' 类型的操作数 C:\Git...\LinearInterpolator.cs
我应该如何重用我的代码?
编辑:快速运行对于这个模块很重要。
最佳答案
您当前的代码没有问题 - 可能是您在不将 double 转换为小数的情况下可以实现的最佳代码。
通用解决方案可能,但会涉及相当多的基础设施 - 如此之多以至于会使事情变得过于复杂。
关于c# - 如何使用泛型开发适用于 double 和小数的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10301594/