ชื่อจะทำให้เข้าใจผิดดังนั้นโปรดอ่านคำถามทั้งหมด :-)
โดย "ผู้ประกอบการที่ได้รับมอบหมายสารประกอบ" ผมมีในใจสร้างเช่นนี้ยกตัวอย่างเช่นop=
+=
ตัวดำเนินการกำหนดค่าบริสุทธิ์ ( =
) ไม่ได้อยู่ในคำถามของฉัน
โดย "ทำไม" ฉันไม่ได้หมายถึงความเห็น แต่เป็นแหล่งข้อมูล (หนังสือบทความ ฯลฯ ) เมื่อนักออกแบบบางคนหรือเพื่อนร่วมงาน ฯลฯ แสดงเหตุผลของพวกเขา(เช่นแหล่งที่มาของตัวเลือกการออกแบบ)
ฉันงงงวยด้วยความไม่สมดุลที่พบใน C ++ และ C # ( ใช่ฉันรู้ว่า C # ไม่ใช่ C ++ 2.0 ) - ใน C ++ คุณต้องโอเวอร์โหลดโอเปอเรเตอร์+=
แล้วเขียน+
ตัวดำเนินการที่เหมาะสมโดยอัตโนมัติอาศัยโอเปอเรเตอร์ที่กำหนดไว้ก่อนหน้านี้ ใน C # เป็นแบบย้อนกลับ - คุณโอเวอร์โหลด+
และ+=
สังเคราะห์สำหรับคุณ
หากฉันไม่เข้าใจผิดวิธีการในภายหลังจะฆ่าโอกาสในการปรับให้เหมาะสมในกรณีของจริง+=
เนื่องจากต้องสร้างวัตถุใหม่ ดังนั้นจะต้องมีข้อได้เปรียบที่ยิ่งใหญ่ของวิธีการดังกล่าว แต่ MSDN อายเกินกว่าจะบอกได้
และฉันสงสัยว่าข้อได้เปรียบนั้นคืออะไร - ดังนั้นหากคุณเห็นคำอธิบายในหนังสือ C #, วิดีโอพูดคุยทางเทคนิค, รายการบล็อก, ฉันจะขอบคุณสำหรับการอ้างอิง
สิ่งที่ใกล้เคียงที่สุดที่ฉันพบคือความคิดเห็นในบล็อก Eric Lippert เพราะเหตุใดตัวดำเนินการโอเวอร์โหลดจึงคงที่เสมอใน C # โดย Tom Brown ถ้าการโอเวอร์โหลดแบบสแตติกถูกตัดสินก่อนสิ่งนั้นจะกำหนดเพียงว่าตัวดำเนินการใดที่สามารถโอเวอร์โหลดสำหรับโครงสร้างได้ สิ่งนี้เพิ่มเติมกำหนดสิ่งที่สามารถโอเวอร์โหลดสำหรับคลาสได้
*=
กลายพันธุ์ของประเภทอ้างอิงไม่ถูกต้องในเชิงความหมาย
+=
ครั้งแรกดูเหมือนว่าไร้สาระ; เหตุใดคุณจึงโอเวอร์โหลดการดำเนินการแบบรวมมากกว่าส่วนของมัน