2015-02-11 85 views
1

所以我從來沒有看到這一點,我想弄清楚它做什麼:方法定義中的operator +做什麼?

public static MyFunction operator +(MyObject first, MyObject second) 
+1

這是一個運算符重載:https://msdn.microsoft.com/en-us/library/aa288467%28v=vs.71%29.aspx – itsme86 2015-02-11 21:31:01

+1

它是加法運算符。它允許你「添加」兩個'MyObjects'。 – 2015-02-11 21:31:21

+0

[C#中的運算符重載]的可能的重複(http://stackoverflow.com/questions/7899339/operator-overloading-in-c-sharp) – Codeman 2015-02-11 21:35:21

回答

8

它被稱爲operator overload

它允許您使用原始運算符(如+,-,%等)應用於您定義的對象。

一個可能有用的例子是,如果您有兩個列表,並且您希望將其中一個添加到另一個列表的末尾。 MSDN使用的另一個例子是如果你有兩個向量的複數。

現在通常更恰當的是定義一個方法,該方法接受要應用的操作數的數量並使用該方法,而不是通過覆蓋使用的操作符來使代碼更難以讀取和調試爲其他事情。

tl; dr;使用方法而不是運算符重載,除非你有一個很好的理由。

+0

'vector1 + vector2'>'Vector.Add(vector1,vector2)' – 2016-04-20 21:49:48

+0

@EmperorAiman一般情況下,除非你正在編寫一些真正的核心框架東西IMO,否則應該避免運算符重載。做你想做的,但它只是一種方法,如果你只是使用方法簽名,你可以避免混淆 – Codeman 2016-04-20 23:13:42

8

它覆蓋+操作該類,讓這樣的代碼來編譯和運行:

MyObject op1 = new MyObject(); 
MyObject op2 = new MyObject(); 
MyFunction result = op1 + op2; 

執行+操作會調用您發佈的方法。更多關於操作符重載,見MSDN

相關問題