2010-03-01 139 views
-3

爲什麼c#不允許運算符重載而C++呢?爲什麼C#不允許運算符重載?

我得到這個錯誤,當試圖超載。

重載的二元運算符預期

我的示例代碼的樣子,

public static MyClass operator +=(MyClass obj1, MyClass obj2) 
     { 
      ... 
     } 
+1

@用戶:我編輯了我的答案,解釋爲什麼你的代碼不工作。 – 2010-03-01 06:10:56

回答

13

可以重載運營商在C#:

在你決定使用操作符重載,請至少是閱讀以下內容:


編輯迴應運算的編輯:

+=是一個非重載的運算符。但是,它解析爲+,並且+是可重載的。有一個look here您可以和不能超載的操作員。

算可重載:

+-!~++--truefalse

+-*/%&|^<<>>

==!=<><=>=(比較運算符可以重載,但看到鏈接注)

+0

感謝它幫助我 – developer 2010-03-01 09:39:21

2

C#確實允許操作符重載。 MSDN教程here

4

它允許操作符重載..

中說,它的一般建議而不是來重寫操作符,因爲它改變了代碼的語義,因此使得它不易被其他人維護。

+7

除非重載操作符爲它們所操作的對象提供適當的語義。複數類的'+'的典型例子是操作符重載的完全可接受的用法。 – Andrew 2010-03-01 05:38:41

+0

再加上鑄造操作符,例如在Linq to XML中,讀取元素值非常優雅。 – 2010-03-01 05:53:39

+0

@安德魯,謝謝澄清。 – Paul 2010-03-01 15:07:04

5

運算符重載,C#允許。 (Yoda版)