Başlık yanıltıcıdır, bu yüzden lütfen tüm soruyu okuyun :-) .
"Bileşik atama operatörü" derken aklında böyle bir yapıya sahiptir: op=
örneğin, +=
. Saf atama operatörü ( =
) soruma ait değil.
"Neden" ile kastetmiyorum ama bazı tasarımcıların ya da iş arkadaşlarının vs. akıl yürütmelerini ifade ettikleri zaman kaynak (kitap, makale, vb.) (Yani tasarım seçiminin kaynağı).
C ++ ve C # 'da bulunan asimetri tarafından şaşkınım ( evet, C # C ++ 2.0 değil ) - C ++' da operatörü aşırı yükler +=
ve daha sonra otomatik +
olarak daha önce tanımlanan operatöre dayanarak uygun operatörü yazarsınız . C # 'da tersidir - aşırı yüklenir +
ve +=
sizin için sentezlenir.
Yanılmıyorsam, yeni yaklaşımın +=
yaratılması gerektiğinden , sonraki yaklaşım gerçekte optimizasyon şansını öldürür . Bu nedenle, bu yaklaşımın büyük bir avantajı olmalı, ancak MSDN bunu anlatmak için çok utangaç.
Ve bu avantajın ne olduğunu merak ediyorum - bu yüzden bazı C # kitaplarında, teknik konuşma videolarında, blog girişlerinde açıklama bulduysanız, referans için minnettar olacağım.
Buldum en yakın şey Eric Lippert blog bir yorum Neden aşırı yük operatörleri her zaman C # statik? Tom Brown tarafından. Statik aşırı yüklenmeye karar verilirse, sadece yapılar için hangi operatörlerin aşırı yüklenebileceğini belirler. Bu ayrıca sınıflar için neyin aşırı yüklenebileceğini belirler.
*=
bir referans türünü anlamsal olarak yanlış olarak değiştirmeyi bulurdum .
+=
önce saçma görünüyor; neden parçaları yerine birleşik bir işlemi aşırı yüklersiniz?