Por que não consigo sobrecarregar o operador + = em c #? Mas ainda posso usá-lo? [duplicado]
Possível duplicado:
Maneira simples de sobrecarregar o operador de atribuição composta em C #?
Eu estava brincando com eventos e achava que os eventos eram estranhos. Por que eu não poderia simplesmente implementá-los em uma classe genérica. Então eu tentei e descobri que eu não posso sobrecarregar + =.A partir das especificações de idioma encontradas aqui
The overloadable unary operators are:
+ - ! ~ ++ -- true false
The overloadable binary operators are:
+ - * / % & | ^ << >> == != > < >= <=
+ = não está listado. Agora, antes que você diga que não há razão para sobrecarregar + = eu gostaria de mostrar o fato de que o C # possui eventos que usam o operador + = e o fato de eu tentar implementar um evento por diversão e querer usar o operador + =. Agora, tenho a sensação de que alguém dirá que é por isso que os eventos existem, porque é a única razão. No entanto, eu quero trazer à tona você pode usar + = com a estrutura TimeSpan. Vá tentar,var ts= new TimeSpan(); ts += ts;
irá compilar e executar.
Eu olhei para a definição de TimeSpan e não tenho idéia de como está permitindo isso. eu vi umpublic static TimeSpan operator +(TimeSpan t);
que parecia suspeito, mas então percebo que é algo comovar name = +ts;
como você pode fazervar name = -ts;
por negação.
Então, minha pergunta é: como eu uso o + = para minha estrutura ou classe. Parece ser suportado, simplesmente não consigo encontrar a documentação.