ในโพสต์นี้ เราจะเข้าใจความแตกต่างระหว่างผู้รับมอบสิทธิ์และเหตุการณ์ใน C#
ผู้รับมอบสิทธิ์
-
สามารถประกาศได้โดยใช้คีย์เวิร์ด 'delegate'
-
มันคือตัวชี้ฟังก์ชัน
-
มีการอ้างอิงถึงวิธีการอย่างน้อยหนึ่งวิธีระหว่างรันไทม์
-
เป็นคีย์เวิร์ดอิสระ
-
ไม่ขึ้นอยู่กับเหตุการณ์
-
ประกอบด้วยเมธอด Combine() และ Remove() ที่ช่วยเพิ่มเมธอดในรายการการเรียกใช้
-
สามารถส่งผ่านเป็นพารามิเตอร์ไปยังวิธีการได้
-
ตัวดำเนินการ '=' สามารถใช้กำหนดวิธีเดียวได้
-
ตัวดำเนินการ '+=' สามารถใช้กำหนดวิธีการได้หลายวิธีให้กับผู้รับมอบสิทธิ์
กิจกรรม
-
สามารถประกาศได้โดยใช้คีย์เวิร์ด "เหตุการณ์"
-
สามารถกำหนดเป็นกลไกการแจ้งเตือนที่ขึ้นอยู่กับผู้รับมอบสิทธิ์
-
ขึ้นอยู่กับผู้รับมอบสิทธิ์
-
ไม่สามารถสร้างขึ้นได้หากไม่มีผู้รับมอบสิทธิ์
-
สามารถเข้าใจได้ว่าเป็น wrapper รอบ ๆ อินสแตนซ์ของผู้รับมอบสิทธิ์
-
ซึ่งจะช่วยป้องกันไม่ให้ผู้ใช้ของผู้รับมอบสิทธิ์รีเซ็ตผู้รับมอบสิทธิ์และรายการคำขอ
-
อนุญาตให้เพิ่มหรือลบเป้าหมายจากรายการคำขอเท่านั้น
-
คลาส "EventInfo" ตรวจสอบเหตุการณ์และช่วยผูกตัวจัดการเหตุการณ์
-
แฮนเดิลเหล่านี้รวมถึงเมธอดต่างๆ เช่น AddEventHandler() และ RemoveEventHandler() ซึ่งช่วยเพิ่มและลบเมธอดในรายการการเรียกใช้ตามลำดับ
-
เหตุการณ์สามารถเกิดขึ้นได้ แต่ไม่สามารถส่งผ่านเป็นพารามิเตอร์ไปยังเมธอดได้
-
ตัวดำเนินการ '=' ใช้กับกิจกรรมไม่ได้
-
ตัวดำเนินการ '+=' และ '-=' สามารถใช้กับเหตุการณ์ที่เพิ่มหรือลบตัวจัดการเหตุการณ์ตามลำดับ
-
เมธอดเหล่านี้จะเรียกเมธอดภายใน เช่น AddEventHandler และRemoveEventHandler