我正在閱讀CodeBetter.com的Business Primitives,並且正在醞釀這個想法。以他的Money爲例,如何以一種與常規值類型類似的方式實現這個功能?重載「設置爲等於」運算符
我的意思是這樣:
Money myMoney = 100.00m;
相反的:
Money myMoney = new Money(100.00m);
我明白如何覆蓋所有運營商允許的功能做數學等等,但我不」不知道需要重寫什麼以允許我正在嘗試做什麼。
這樣做的想法是最大限度地減少實現新類型時所需的代碼更改,並保持原來的類型不變,只需使用不同的值類型名稱和業務邏輯功能。
理想情況下,我會繼承Integer/Float/Decimal或任何必需的,並根據需要重寫,但顯然不適用於結構。
啊哈,這就是我一直在尋找! 是否有可能將其隱式轉換爲它所分配的類型? 我可以舉例: decimal dec = myMoney; – 2010-01-30 03:50:23
@Aquitarum Custos:是的,你完全可以。只要說'公共靜態隱式操作符小數(金錢){return money.Amount; }'然後'小數d =金錢'是完全合法的。因此,你必須要說的魔術詞是「公共靜態隱式運算符」,然後你給出返回類型(所以這裏是'decimal'),然後,作爲運算符的單個參數,你想要轉換的類型的參數所以在這裏'錢')。請注意,返回類型或參數類型之一必須是封閉類的類型。因此'public static implicit operator string(int i)'是不合法的。 – jason 2010-01-30 04:02:19
很高興知道它的雙向作用,謝謝! – 2010-01-30 04:23:52