2010-03-22 6 views
4

Je suis confus avec la syntaxe de C#: à quoi sert "+ ="?signification de '+ ='

+0

Veuillez apprendre la signification du champ tags. – SLaks

+2

S'il vous plaît également apprendre à épeler et à utiliser la grammaire. – Dom

+8

Bonjour, ce site peut être un peu plus pointilleux que vos forums habituels mais l'effort mis pour poser des questions efficaces en vaut la peine. Vous obtenez plus de kilométrage à partir d'ici si vous tapez en anglais complet, fournissez un contexte spécifique à votre question et fournissez des exemples. – Extrakun

Répondre

5
a += 3 

est le même que

a = a + 3 
30

La syntaxe += peut être utilisé de différentes façons:

SomeEvent += EventHandler; 

Ajoute un gestionnaire à un événement.


SomeVariable += 3; 

équivaut à

SomeVariable = SomeVariable + 3; 
+1

Bonne réponse. J'aurais espacé sur l'aspect gestionnaire d'événement de cet opérateur, en sachant mieux. – Beska

+0

L'aspect du gestionnaire d'événements est à peu près identique aux autres aspects; Tout ce qui se passe là est que l'objet event/delegate remplace l'opérateur +. A + = b est simplement du sucre syntaxique pour a = a + b. Voir http://msdn.microsoft.com/en-us/library/8edha89s.aspx, qui indique que "les opérateurs d'affectation ne peuvent pas être surchargés, mais + =, par exemple, est évalué en utilisant +, qui peut être surchargé." – technophile

+4

@ Technophile: Mauvais. En dehors de la classe (ou toujours en C# 4.0), 'instance.Event + = handler' se compile en' instance.add_Event (gestionnaire); ' – SLaks

6

Ceci est appelé un opérateur composé. Ils sont communs à toutes les langues que je peux chose: Javascript, C, Java, PHP, .net, GL.

Comme tout le monde l'a dit, est une version abrégée de value = value + 3.

Il y a plusieurs raisons à son utilisation. De toute évidence, il est plus rapide d'écrire, plus facile à lire et plus rapide pour repérer les erreurs. Le plus important, un opérateur composé est spécifiquement conçu pour ne pas exiger autant de calcul que l'équivalent value = value + 3. Je ne suis pas tout à fait sûr pourquoi mais la preuve est primordiale. Créez simplement une boucle en bouclant par exemple 5 000 000 en ajoutant une valeur au fur et à mesure. Dans deux cas de test, je sais personnellement d'Actionscript, il y a une augmentation de vitesse d'environ 60% avec les opérateurs composés.


Vous avez également l'équivalent:

+=: plus

-=: soustraction

/=: multiplication

*=: multplication

%=: module

et moins évidente:

++: Plus un

--: Moins un

+0

Et la liste complète des opérateurs d'affectation de composés est ici: 'x + = y x - = y x * = y x/= y x% = y x & = y x | = y x^= y x << = y x >> = y' Copié [MSDN: C# opérateurs] (http://msdn.microsoft.com/en-us/library /6a71f45d.aspx). –

0

Remarque, il est pas nécessairement toujours équivalent.

pour les variables ordinaires, a+=a est, en effet, équivalent à a=a+a, et plus court !. Pour la variable impaire qui change d'état, pas tellement.