Il titolo è fuorviante, quindi per favore leggi l'intera domanda :-) .
Per "operatore di assegnazione composto" ho in mente un costrutto come questo op=
, per esempio +=
. L'operatore di assegnazione puro ( =
) non appartiene alla mia domanda.
Per "perché" non intendo un'opinione, ma una risorsa (libro, articolo, ecc.) Quando alcuni designer, i loro colleghi, ecc. Esprimono il loro ragionamento (cioè la fonte della scelta del design).
Sono sconcertato dall'asimmetria trovata in C ++ e C # ( sì, so che C # non è C ++ 2.0 ) - in C ++ sovraccaricheresti l'operatore +=
e poi scriveresti quasi automaticamente un +
operatore appropriato basandoti su un operatore precedentemente definito. In C # è al contrario - sovraccarichi +
ed +=
è sintetizzato per te.
Se non sbaglio l'approccio successivo uccide una possibilità di ottimizzazione in caso di effettiva +=
, poiché è necessario creare un nuovo oggetto. Quindi ci deve essere un grande vantaggio di tale approccio, ma MSDN è troppo timido per dirlo.
E mi chiedo quale sia il vantaggio - quindi se hai notato spiegazioni in alcuni libri di C #, video di talk-tech, post di blog, ti sarei grato per il riferimento.
La cosa più vicina che ho trovato è un commento sul blog di Eric Lippert Perché gli operatori sovraccarichi sono sempre statici in C #? di Tom Brown. Se il sovraccarico statico è stato deciso per primo, indica semplicemente quali operatori possono essere sovraccaricati per le strutture. Ciò determina ulteriormente ciò che può essere sovraccaricato per le classi.
*=
mutare un tipo di riferimento fosse semanticamente errato.
+=
sembra prima assurdo; perché dovresti sovraccaricare un'operazione combinata anziché le sue parti?