2012-09-18 62 views
1

使用小數時會發生舍入錯誤,因爲它從另一個系統讀取另一個數據類型。所以我想知道是否有可能重載十進制類型的+運算符?我看到的所有例子都是基於新定義的結構。我可以重載十進制類型的+運算符嗎?

+1

我腦海中的某些東西在嘮叨我說「這不是正確的做法」。你能否澄清這個陳述「因爲它從另一個系統讀取另一個數據類型」?考慮你會後悔超負荷的可能性,尤其是如果在實施過程中你需要......增加兩位小數。此外,請考慮您正在依賴於特定於您當前使用的.NET版本/修訂版的行爲的可能性。 –

回答

4

decimalvalue type,因此不能被繼承。您必須糾正在此之外的舍入,可能是通過擴展方法,例如,

public static decimal Add(this decimal value, ...) 
{ 
    ... do manual calculation & rounding 
} 
3

你只能超負荷運營商對於類/結構的定義範圍內的類/結構,所以沒有辦法,你可以覆蓋的decimal類型的默認+行爲。

理想情況下,你會寫一些包裝來糾正源頭的舍入錯誤。