2010-03-01 66 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版)

相关问题