C#中是否有包含距离、速度、加速度等类库?

3

我即将在C#中开始一些数值分析工作,考虑使用运算符重载和类如Distance, Speed, Acceleration等,以及适当定义的运算符重载,确保所有自然操作都是允许的,所有错误的操作都是禁止的,这样可以

speed = distance / time

这将会按照预期运行,但

acceleration = distance / time

代码无法编译(或至少会抛出异常)。

我不可能是第一个需要这样的功能的人,所以我想知道是否有适合使用的库?


这是F#(因此不是答案),但您可能会对F#的度量单位感兴趣。http://msdn.microsoft.com/en-us/library/dd233243.aspx和http://blogs.msdn.com/b/andrewkennedy/archive/2008/08/29/units-of-measure-in-f-part-one-introducing-units.aspx。它可以解决您的问题,但您必须使用F#。还可以查看https://dev59.com/VnRC5IYBdhLWcg3wSu97 - Ray
我认为您最好实现以下方法,例如:GetSpeed(double distance, double time) { return distance / time; }。您在这里提出的建议只会使事情比必须复杂。 - Jouke van der Maas
所有这些示例都忽略了速度实际上是一个向量的事实... - Felice Pollano
@Felice。不是的,你想的是速度。 - Ray
@Ray,你说得对,这是我的疏忽造成的错误。 - Felice Pollano
@Ray,是的,单位问题就是我所想的那种事情,尽管我不希望单位被固定下来;如果想要一个特定的单位,我更倾向于使用speed.MetresPerSecondspeed.MilesPerHour方法或属性。 - Brian Hooper
1个回答

0

我认为你可以通过定义新类型来实现这个目标,比如说

public class MathEntity { /*Operators overlaoding */}
public class Distance : MathEntity { /*Implementation*/}
public class Time   : MathEntity {/* Implementation*/}

希望这能有所帮助。

这就是他在问题中所说的。他正在询问是否有一个库,这样他就不必自己做了。 - Ray

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接