Casi todas las respuestas afirman que x + = y; es "equivalente" a "x = x + y;"
Esto no es realmente cierto.No son exactamente equivalentes por varias razones.
En primer lugar, los efectos secundarios solo se realizan una vez. Supongamos que tiene
class C { public string S { get; set; } }
class D
{
private static C c = new C();
static C M()
{
Console.WriteLine("hello!");
return c;
}
}
La primera línea a continuación imprime "hola" una vez, como era de esperar. El segundo lo imprime dos veces.
D.M().S += "abc";
D.M().S = D.M().S + "abc";
En segundo lugar, el sistema de tipos funciona de manera diferente para la asignación compuesta que para la asignación normal.
short b = 1;
short c = 2;
b += c;
b = b + c;
La tercera línea es legal. La cuarta línea no es; un corto más un corto es un int en C#, entonces b = b + c es una asignación ilegal de un int a un corto. En este caso, la asignación compuesta es en realidad equivalente a b = (corto) (b + c);
Si este tema le interesa, lo invito a leer las secciones 7.17.2 y 7.17.3 de la especificación C#.
Y Wikipedia no ayuda? http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B –
Estos operadores aparecen en varios idiomas, pero elija uno solo para preguntar para poder dar mejores respuestas y evitar el spam de etiquetas. – danben
Cualquier y toda esta información se puede encontrar fácilmente en wikipedia u otros sitios de referencia. – James