2011-07-06 93 views
3

我即將開始在C#中進行一些數值分析工作,並且正在考慮使用運算符重載和類,例如Distance,Speed,Acceleration等,以及適當定義的運算符重載,以確保所有自然操作都會被許可,並都錯的人被禁止,這樣c#中有類庫的距離,速度,加速度等嗎?

speed = distance/time 

會表現爲人們所期望的,但

acceleration = distance/time 

不會編譯(或至少拋出一個異常)。

我不能成爲第一個想要這個,所以我想知道如果有人知道一個合適的圖書館可用?

+0

它是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部件酮引入-units.aspx。它解決了你的問題,但你必須使用F#。也看看http://stackoverflow.com/questions/348853/units-of-measure-in-c-almost – Ray

+0

我認爲你會更好的實現這個方法,即。 'GetSpeed(雙倍距離,雙倍時間){返回距離/時間; }'。你在這裏提出的建議只會讓事情變得比他們需要的更復雜。 –

+0

所有這些例子忽略速度實際上是一個載體... –

回答

0

我想你可以實現通過定義新的類型的這一目標,讓我們說

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

希望這有助於。

+0

這就是他在這個問題中所說的。他問是否有圖書館,所以他不必親自去做。 – Ray