Bài giảng C# và môi trường Donet - Bài 13: Delegate và Event

ppt 14 trang ngocly 2250
Bạn đang xem tài liệu "Bài giảng C# và môi trường Donet - Bài 13: Delegate và Event", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pptbai_giang_c_va_moi_truong_donet_bai_13_delegate_va_event.ppt

Nội dung text: Bài giảng C# và môi trường Donet - Bài 13: Delegate và Event

  1. Bài 13 Delegate và Event
  2. ▪ Ôn tập lại bài cũ • Kỹ thuật generic • System.Collections.generic • Generic class • Generic method • Generic interface • Iterator
  3. Delegate và Event ▪ Nội dung trình bày • Định nghĩa delegate • Khai báo delegate • Sử dụng delegate • Multicast delegate • Các đặc điểm của delegate • Định nghĩa event • Khai báo và sử dụng event Subject name / Session# / 3 of Totalpage
  4. Delegate và Event ▪ Định nghĩa delegate • using System; namespace Akadia.NoDelegate { public class MyClass { public void Process() { Console.WriteLine("Process() begin"); Console.WriteLine("Process() end"); } } public class Test { static void Main(string[] args) { MyClass myClass = new MyClass(); myClass.Process(); } } }
  5. Delegate và Event ▪ Định nghĩa delegate • Muốn gọi một phương thức chúng ta phải gọi thông qua đối tượng hoặc thông quan lớp nếu phương thức là tĩnh(có từ khóa static đặt trước). • Chúng ta có thể gọi một phương thức một cách gián tiếp thông qua delegate • Delegate giống như khái niệm con trỏ hàm trong ngôn ngữ C và C++. Nó dùng để tham chiếu đến một phương thức. • Đối tượng delegate chứa(bao gói) sự tham chiếu đến một phương thức trong nó.
  6. Delegate và Event ▪ Khai báo delegate • delegate result-type identifier ([parameters]); • Trong đó delegate là từ khóa • result-type là kiểu dữ liệu trả về, phải giống kiểu dữ liệu trả về của phương thức mà delegate tham chiếu đến • identifier là tên delegate • Parameters là các tham số, phải giống kiểu và số lượng đối số của phương thức mà delegate định tham chiếu đến • Ví dụ: • public delegate void SimpleDelegate () − Khai báo một delegate tên là SimpleDelegate, delegate này có thể tham chiếu đến bất kỳ phương thức nào không có đối số và không có kiểu dữ liệu trả về. • public delegate int ButtonClickHandler (object obj1, object obj2)
  7. Delegate và Event ▪ Sử dụng delegate • Gồm 3 bước: − Khai báo delegate  delegate result-type identifier ([parameters]); − Viết phương thức mà delegate sẽ tham chiếu đến  Phương thức mà delegate tham chiếu đến phải có nguyên mẫu giống deletegate − Khởi tạo đối tượng delegate  objectName = new ( ); − Gọi đối tượng delegate  ObjectName(parameters); ▪ Ví dụ DEMO
  8. Delegate và Event ▪ Multicast delegate • Một delegate có thể tham chiếu đến nhiều hơn một phương thức tại một thời điểm. • Sử dụng toán tử += • Ví dụ DEMO
  9. Delegate và Event ▪ Tại sao cần delegate • Dùng để tạo ra cơ chế truyền dữ liệu qua sự kiện trong mô hình lập trình hướng sự kiện. • Khi đối tượng A phát sinh một sự kiện, nó muốn truyền sự kiện này sang B . Nhưng A được viết trước (A là một button chẳng hạn) được viết trước B (Ví dụ B là một Form chẳng hạn) nên A không thể biết B có những phương thức nào để gọi . Nên cần định nghĩa trước một nguyên mẫu cho A rồi implement trong B , rồi A gọi B qua nguyên mẫu này .
  10. Delegate và Event ▪ Định nghĩa event • Event(sự kiện) được tạo ra bởi người dùng hoặc hệ thống. Ví dụ khi người dùng click lên một Button Publisher là đối tượng thực hiện công việc nào đó Và tạo ra event Subcribers là đối tượng đã gược đăng ký(subscribed) để nhận sự kiện
  11. Delegate và Event ▪ Khai báo và sử dụng event • Khai báo bên trong một lớp hoặc interface • Ví dụ: //Khai báo delegate public delegate void LogHandler(string message); // Khai báo một event dựa trên delegate public event LogHandler Log;
  12. Delegate và Event
  13. Delegate và Event ▪ Khai báo và sử dụng event • Khai báo delegate • Khai báo event • Gán kết event với delegate(listener) và phương thức xử lý event(event handler) • Tạo event(raise event) ▪ Ví dụ DEMO
  14. Delegate và Event ▪ Kết luận • Khái niệm và cách sử dụng delegate • Multicast delegate • Khái niệm event và cách khai báo • Gán kết delegate với event(subcribing to event )