Danh mục

Lập trình windows C# - Chương 4

Số trang: 50      Loại file: ppt      Dung lượng: 690.50 KB      Lượt xem: 14      Lượt tải: 0    
Thư viện của tui

Hỗ trợ phí lưu trữ khi tải xuống: 12,000 VND Tải xuống file đầy đủ (50 trang) 0
Xem trước 5 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Tham khảo tài liệu lập trình windows c# - chương 4, công nghệ thông tin, kỹ thuật lập trình phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả
Nội dung trích xuất từ tài liệu:
Lập trình windows C# - Chương 4Cơ chế Delegate & Event Nguyễn Văn Phong Nội dung Delegate Khái niệm delegate Thực thi delegate Multicast delegate Giải pháp cho hàm Sort tổng quát Event Khái niệm event Event & delegate Cơ chế publishing & subscribing Minh họa cơ chế eventNguyễn Văn Phong - 2010Nguy Delegate Lớp đóng gói các phương thức (method signature) Dùng trong event-handling model của C# Đặc tính Type safe Object oriented mechanism Delegate là class: Có instance Có thể chứa những tham chiếu đến 1 hay nhiều methodNguyễn Văn Phong - 2010Nguy Delegate Một delegate định nghĩa một signature Return type Sequence of parameter types Tất cả các method có cùng signature có thể được add vào thể hiện của delegate Delegate instance có một danh sách các tham chiếu method Cho phép add (+) các method Có thể remove (-) các methodNguyễn Văn Phong - 2010Nguy Define delegate public delegate void MyDelegate1(int x, int y) public MyDelegate1(int Delegate cho dạng hàm: Delegate void Method( int, int ) public delegate string MyDelegate2(float f) public MyDelegate2(float Delegate cho dạng hàm: Delegate string Method( float )Nguyễn Văn Phong - 2010Nguy Instance delegate public void Method1(int x, int y) { … } … MyDelegate1 del1 = new MyDelegate1(Method1); MyDelegate1 MyDelegate1 public string Method2(float f) { … } … MyDelegate2 del2 = new MyDelegate2(Method2); MyDelegate2 MyDelegate2Nguyễn Văn Phong - 2010Nguy Call Delegate Gọi del1 int x = 5, y = 10; int y = 2; del1(10, 20); del1(x, y); del1(100, y); Gọi del2 float f =0.5f; string s = del2(100f); string s; s = del2(f);Nguyễn Văn Phong - 2010Nguy Multi Cast void Print(int x,int y) { Console.WriteLine(“x = {0}, y = {1}”, x, y); } void Sum(int x, int y) { Console.WriteLine(“Tong = {0}”, x+y); } MyDelegate1 mulDel = new MyDelegate1(Print); mulDel += new MyDelegate1(Sum); mulDel(5, 10); mulDel(5, mulDel -= new MyDelegate1(Print); mulDel mulDel(5,10);Nguyễn Văn Phong - 2010NguyNguyễn Văn Phong - 2010Nguy Problem Xây dựng hàm Sort tổng quát cho cho mảng đối tượng có kiểu bất kỳNguyễn Văn Phong - 2010Nguy Solution Phân tích Nếu đối tượng là kiểu số như int, long, float thì ko có vấn đề Trường hợp đối tượng phức khác? So sánh theo So quy tắc nào quyNguyễn Văn Phong - 2010Nguy Solution Giải pháp: Cho phép đối tượng tự quy định thứ tự của chúng Sử dụng delegate để truyền phương thức so sánh này vào hàm Sort void Sort(object[] list, CompareObj cmp) Delegate này sẽ tham chiếu tới hàm Compare của lớp MyClass. Chính lớp MyClass sẽ quy định thứ tự của các đối tượngNguyễn Văn Phong - 2010Nguy Solution Mô tả delegate CompareObj cho hàm Sort: Tên của delegate public delegate bool CompareObj(object o1,object o2) public bool CompareObj object o2) Trả về true: nếu o1 “trước” o2 false: ngược lại 2 đối tượng cần so sánhNguyễn Văn Phong - 2010Nguy Solution ...

Tài liệu được xem nhiều: