重载+ =,+,==和!=运算符

Jof*_*sey 6 c# operator-overloading

可能重复:
为什么我们必须在C#中定义==和!=?

为什么重载+ =只能通过重载+,但==和!=分别重载?
它似乎应该倒置.
+ =重载几乎总是可以写得更有效,因为没有必要为新对象分配内存.但是我不能发明一个例子,其中运算符==和!=应该是不同的,除了反转结果Equals().

Chr*_*ens 7

之前已经提出过类似的问题.

最大的原因是当你重载==!=运算符时,你不必返回一个布尔值.如果您没有返回布尔值,则不能只反转互补运算符.还有其他可能的原因导致它们被单独重载,您可以出于其他原因查看该问题的答案.

有一个有效的原因是你无法超载+=,因此它是通过+操作员隐式完成的.我必须处理的事实是你无法覆盖C#中的赋值运算符,它是语言标准的一部分.的+=是增量和分配,而你不能在C#中超载后者.

  • +1如果你可以分别重载`+`和`+ =`,那就想象一下疯狂...... (4认同)