Bài giảng Lập trình C# - Bài 13: Delegate và Event
Đị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
Bạn đang xem nội dung tài liệu Bài giảng Lập trình C# - Bài 13: Delegate và Event, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Bài 13Delegate và EventÔn tập lại bài cũKỹ thuật genericSystem.Collections.genericGeneric classGeneric methodGeneric interfaceIteratorSubject name / Session# / 3 of TotalpageNội dung trình bàyĐịnh nghĩa delegateKhai báo delegateSử dụng delegateMulticast delegateCác đặc điểm của delegateĐịnh nghĩa eventKhai báo và sử dụng eventDelegate và EventDelegate và EventĐịnh nghĩa delegateusing 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(); } }} Định nghĩa delegateMuố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 delegateDelegate 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ó.Delegate và EventKhai báo delegatedelegate result-type identifier ([parameters]); Trong đó delegate là từ khóaresult-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 đếnidentifier là tên delegateParameters 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 đếnVí 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) Delegate và EventSử dụng delegateGồm 3 bước:Khai báo delegatedelegate result-type identifier ([parameters]); Viết phương thức mà delegate sẽ tham chiếu đếnPhương thức mà delegate tham chiếu đến phải có nguyên mẫu giống deletegateKhởi tạo đối tượng delegate objectName = new ();Gọi đối tượng delegateObjectName(parameters);Ví dụ DEMODelegate và EventMulticast delegateMộ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ụ DEMODelegate và EventTại sao cần delegateDù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 .Delegate và EventĐịnh nghĩa eventEvent(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 ButtonPublisher là đối tượng thực hiện công việc nào đóVà tạo ra eventSubcribers là đối tượng đãgược đăng ký(subscribed)để nhận sự kiệnDelegate và EventKhai báo và sử dụng eventKhai báo bên trong một lớp hoặc interfaceVí 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;Delegate và EventDelegate và EventKhai báo và sử dụng eventKhai báo delegateKhai báo eventGá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ụ DEMODelegate và EventKết luậnKhái niệm và cách sử dụng delegateMulticast delegateKhái niệm event và cách khai báoGán kết delegate với event(subcribing to event )Delegate và Event