2010-03-01 10 views
-3

Pourquoi C# n'autorise pas la surcharge de l'opérateur alors que C++ le fait?pourquoi C# ne permet pas la surcharge de l'opérateur?

J'ai eu cette erreur, en essayant de surcharger.

opérateur binaire surchargeable attendu

Mon exemple de code ressemble,

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

@User: J'ai édité ma réponse pour expliquer pourquoi votre code n'a pas fonctionné. –

Répondre

13

Vous pouvez surcharger les opérateurs en C#:

Avant de décider d'utiliser la surcharge de l'opérateur, s'il vous plaît lire à tout le moins, les éléments suivants:


EDIT en réponse à la modifier de op:

Le += est un opérateur non surchargeable. Cependant, il se résout à +, et + est surchargeable. Avoir un look here pour quels opérateurs vous pouvez et ne pouvez pas surcharger.

Les opérateurs qui peuvent être surchargées:

+, -, !, ~, ++, --, true, false

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

==, !=, <, >, <=, >= (Les opérateurs de comparaison peuvent être surchargées, mais voir la note en lien)

+0

Merci, il m'a aidé – developer

2

C# ne permet la surcharge des opérateurs. MSDN tutoriel here.

4

Il ne permet la surcharge d'opérateur ..

Cela dit, il est généralement recommandé pas pour remplacer les opérateurs car il modifie la sémantique de votre code et le rend donc moins maintenable par d'autres.

+7

À moins que les opérateurs surchargés fournissent une sémantique appropriée pour les objets sur lesquels ils opèrent. L'exemple classique de '+' sur une classe de nombres complexes est une utilisation parfaitement acceptable de la surcharge de l'opérateur. – Andrew

+0

De plus, les opérateurs de casting, par exemple dans Linq to XML, rendent les valeurs des éléments de lecture très élégantes. –

+0

@Andrew, merci d'avoir clarifié cela. – Paul

5

Surcharge de l'opérateur, C# permet. (Version de Yoda)

Questions connexes