我即将在C#中开始一些数值分析工作,考虑使用运算符重载和类如Distance
, Speed
, Acceleration
等,以及适当定义的运算符重载,确保所有自然操作都是允许的,所有错误的操作都是禁止的,这样可以
speed = distance / time
这将会按照预期运行,但
acceleration = distance / time
代码无法编译(或至少会抛出异常)。
我不可能是第一个需要这样的功能的人,所以我想知道是否有适合使用的库?
我即将在C#中开始一些数值分析工作,考虑使用运算符重载和类如Distance
, Speed
, Acceleration
等,以及适当定义的运算符重载,确保所有自然操作都是允许的,所有错误的操作都是禁止的,这样可以
speed = distance / time
这将会按照预期运行,但
acceleration = distance / time
代码无法编译(或至少会抛出异常)。
我不可能是第一个需要这样的功能的人,所以我想知道是否有适合使用的库?
我认为你可以通过定义新类型来实现这个目标,比如说
public class MathEntity { /*Operators overlaoding */}
public class Distance : MathEntity { /*Implementation*/}
public class Time : MathEntity {/* Implementation*/}
GetSpeed(double distance, double time) { return distance / time; }
。您在这里提出的建议只会使事情比必须复杂。 - Jouke van der Maasspeed.MetresPerSecond
或speed.MilesPerHour
方法或属性。 - Brian Hooper