Delegate và Event trong C# (Bài 10)
Bài học delegate và event trong c# sẽ giới thiệu đến bạn đọc cách gọi một phương thức thông qua cơ chế uỷ quyền (delegate) thay vì gọi trực tiếp thông qua tên lớp như chúng ta đã biết.
Ngoài ra chúng tôi sẽ giải thích và demo cách hoạt động của một sự kiện (event) được phát sinh trong C# (Xử lý sự kiện là những xử lý của chương trình trước những thao tác của người dùng như sự kiện click chuột, sự kiện nhấn một phím trên bàn phím…)
Delegate và event trong c# – Cơ chế uỷ quyền (Delegate)
Delegate là một đối tượng chứa tham chiếu đến phương thức mà chúng ta cần thực thi. Bằng cách sử dụng delegate, các lập trình viên có thể gọi bất kỳ phương thức nào tại thời điểm thực thi.
Một delegate giống như một phương pháp chung đại diện cho nhiều phương thức khác nhau và sẽ gọi phương thức nào được yêu cầu ở thời gian chạy chương trình.
Để liên kết một delegate với một phương thức cụ thể thì phương thức và delegate phải giống nhau ở kiểu trả về và kiểu tham số.
Cú pháp khai báo delegate trong C#
access_modifier delegate return_type delegate_name(list_of_parameters);
Ví dụ khai báo một delegate tên Calc
public delegate float Calc(float n1, float n2);
Sử dụng delegate trong C#
Ví dụ sau sẽ trình bày cách sử dụng một delegate trong C# để gọi phương thức tính tổng (Addition)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication.lesson09
{
class DelegateDemo
{
public delegate float Calc(float n1, float n2);
float Addition(float n1, float n2)
{
return (n1 + n2);
}
static void Main(string[] args)
{
float n1 = 5.5F;
float n2 = 15.5F;
DelegateDemo dd = new DelegateDemo();
Calc c = new Calc(dd.Addition);
float ret = c(n1, n2);
Console.WriteLine("{0} + {1} = {2}" ,n1, n2, ret);
Console.Read();
}
}
}
Kết quả sau khi chạy chương trình
Delegate và event trong c# – Event
Hãy xem xét hành động đăng nhập vào facebook của người dùng, sau khi họ nhập thông tin đăng nhập và nhấn phím Enter, hệ thống facebook sẽ xác thực người dùng để biết rằng đó có phải là người dùng hợp lệ hay không.
Nếu xem tình huống ngày dưới góc độ của một lập trình viên, thì thao tác nhấn phím Enter sẽ tương ứng với một sự kiện được phát sinh.
Các bước xử lý sự kiện trong C#
Bước 1: Tạo một delegate
Bước 2: Tạo một event liên kết đến delegate
access_modifier event delegate_name event_name;
Bước 3: Đăng ký sự kiện
event_name += method_name;
Bước 4: Phát sinh sự kiện
event_name();
Delegate và event trong c# – Bài tập thực hành
Bài thực hành số 1: Viết chương trình tính tổng, hiệu, tích và thương sử dụng cơ chế ủy quyền (delegate).
Bài thực hành số 2: Kết hợp delegate, event và ArrayList để viết chương trình cho phép nhập và hiển thị nhiều số nguyên dương (số nguyên lớn hơn).
Menu chương trình
Khi người dùng nhập “add”: cho phép người dùng nhập vào một số nguyên dương. Nếu số vừa nhập không thoả điều kiện, chương trình sẽ hiển thị thông báo “Invalid number. Please try again!“
Trường hợp người dùng nhập hợp lệ
Khi người dùng nhập “display”