MyDelegate1 mulDel = new MyDelegate1(Print); 22.[r]
Trang 1BÀI 7
ỦY NHIỆM, SỰ KIỆN VÀ XỬ LÝ
NGOẠI LỆ TRONG C#
Trang 22 v1.0011106203
TÌNH HUỐNG DẪN NHẬP
Ngôn ngữ lập trình C# thực hiện việc uỷ nhiệm, xử lý sự kiện và xử lý
các ngoại lệ như thế nào?
Chương trình được xây dựng một nhiệm vụ lớn như chương trình quản lý học viên của trường đại học Quốc Gia thì cần đến rất nhiều các kỹ thuật tinh vi của ngôn ngữ lập trình Các ký thuật này không những giúp cho người viết phần mềm dễ dàng thực hiện các công việc mà còn tổ chức và xử lý các lỗi cho chương trình để chương trình chạy
ổn định
Trang 3MỤC TIÊU
Trình bày khái niệm, cách thức sử dụng ủy nhiệm trong C#
Trình bày khái niệm về ngoại lệ, và bắt lỗi, xử lý lỗi trong C#
Trình bày khái niệm sự kiện, và thực hiện chương trình qua các sự kiện
trong C#
Xây dựng chương trình sử dụng ủy nhiệm, sự kiện và bắt lỗi
Trang 44 v1.0011106203
NỘI DUNG
1.1 Uỷ nhiệm
1
1.2 Các phương thức dấu tên
2
1.3 Sự kiện
3
1.4 Xử lý ngoại lệ
4
Trang 5Khai báo
• Uỷ nhiệm(delegate): là kiểu dữ liệu tham chiếu được dùng để đóng gói một phương thức với tham số và kiểu trả về xác định
• Trong delegate thì không cần quan tâm đến những lớp đối tượng mà nó tham chiếu tới mà chỉ cần quan tâm đến các tham số của phương thức và kiểu trả về phải phù hợp với đối tượng ủy quyền khai báo
• Khai báo:
<Bổ từ truy cập> delegate <Kiểu trả về> <Tên phương thức(tham số)>;
1.1 ỦY NHIỆM - DELEGATE
Trang 66 v1.0011106203
• Lớp đóng gói các phương thức (method signature)
• Dùng trong xử lý sự kiện của C#
• Đặc tính
An toàn kiểu (typesafe)
Bảo mật
Hướng đối tượng
• Tất cả các phương thức đóng gói có cùng kiểu trả về và dạng tham số thì có thể được truyền vào thể hiện của delegate
1.1.1 ĐẶC ĐIỂM CỦA DELEGATE
Trang 7• Sử dụng:
<Tên delegate> <đối tượng> new <Tên delegate(Tên phương thức uỷ nhiệm)>;
• Ủy quyền được dùng để:
Xác định những loại phương thức có thể được dùng để xử lý các sự kiện
Thực hiện callback trong chương trình ứng dụng
Xác định các phương thức tĩnh và các instance của phương thức không biết trước cho đến khi chương trình thực hiện
• Các phương thức được gọi lại thông qua Delegate có thể là:
Một instance method
Một class method
1.1.1 ĐẶC ĐIỂM CỦA DELEGATE (tiếp theo)
Trang 88 v1.0011106203
• public delegate void MyDelegate1(int x, int y)
• public delegate string MyDelegate2(float f)
• public void Method1(int x, int y)
• {
• …
• }
• …
• MyDelegate1 del1 = new MyDelegate1(Method1);
• public string Method2(float f)
• {
• …
• }
• …
Ví dụ:
1.1.1 ĐẶC ĐIỂM CỦA DELEGATE (tiếp theo)
Trang 9• Gọi delegate
int x = 5, y = 10;
int y = 2;
del1(100, y);
Gọi del1
Gọi del2
1.1.1 ĐẶC ĐIỂM CỦA DELEGATE (tiếp theo)
Trang 1010 v1.0011106203
• Khi một delegate gói nhiều hơn một phương thức thì nó được gọi là multicast delegate
• Một multicast delegate được gọi thì nó sẽ gọi liên tiếp các phương thức theo thứ tự
• Một delegate có kiểu trả về là void thì trình biên dịch sẽ coi như đây là một multicast delegate
• Một multiccast delegate cho phép nhận toán tử “+”, “-”, “+= “, “-=“
• Một muticast delegate là một lớp được dẫn xuất từ lớp System.MulticastDelegate
1.2 MULTICAST DELEGATE
Ví dụ multicast delegate
15 void Print(int x,int y) {
16 }
17 Console.WriteLine(“x = {0}, y = {1}”, x, y);
18 void Sum(int x, int y) {
19 Console.WriteLine(“Tong = {0}”, x+y);
20 }
21 MyDelegate1 mulDel = new MyDelegate1(Print);
22 mulDel += new MyDelegate1(Sum);
23 mulDel(5, 10);
24 mulDel -= new MyDelegate1(Print);
25 mulDel(5,10);