Thư viện tri thức trực tuyến
Kho tài liệu với 50,000+ tài liệu học thuật
© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

Phần 1: Delegate docx
Nội dung xem thử
Mô tả chi tiết
GIỚI THIỆU VỀ DELEGATE, VÀ CÁCH SỬ DỤNG DELEGATE TRONG C#
Phần 1: Delegate
Một delegate là kiểu tham chiếu tới một phương thức( hàm, mình sẽ gọi là hàm trong suốt bài này luôn nghen ). Một khi
delegate được gán tham chiếu tới một hàm, nó sẽ giống hệt hàm đó. Hàm delegate được dùng giống hệt các hàm bình
thường khác, nghĩa là cũng có kiểu trả về, có tham số truyền vào.
Ví dụ:
public delegate int PerformCalculation(int x, int y);
Ở ví dụ trên, tên của delegate sẽ là "PerformCalculation". Các bạn nên chú ý: khai báo delegate thường rất dễ bị
nhầm lẫn với khai báo hàm.
Tất cả các hàm có đặc tả hàm giống với đặc tả của delegate trên (các tham số truyền vào có kiểu giống nhau, kết quả trả
về giống nhau) đều có thể dùng để delegate trên tham chiếu tới. Do đó chỉ cần biết đặc tả của delegate là chúng ta có thể
tạo hàm của riêng mình để delegate tham chiếu tới. Ví dụ về các hàm mà delegate trên có thể tham chiếu tới:
public int AddMethod(int x, int y);
public int SubtractMethod(int x, int y);
public int PowerMethod(int x, int y);
Bây giờ việc cuối cùng là chúng ta tạo ra đối tượng delegate cụ thể (instance của đặc tả delegate ở trên) và sau đó cho
nó tham chiếu tới một hàm bất kì (cùng đặc tả). Ví dụ:
PerformCalculation addDelegate = new PerformCalculation(AddMethod);
Bây giờ thì thử viết chương trình cộng hai số dùng delegate trên:
<CODE>
public delegate int PerformCalculation(int x, int y);
class TestDelegate
{
public int AddMethod(int m, int n)
{
System.Console.WriteLine("Thuc hien phep cong trong ham AddMethod");
System.Console.WriteLine("{0} + {1} = {2} ", m, n, m + n);
return m + n;
}
[STAThread]
static void Main()
{
TestDelegate phepToan = new TestDelegate();
int x, y;
string strInput = string.Empty;
do
{
try
{
Console.Write("Nhap vao so thu nhat: ");
strInput = Console.ReadLine();
x = System.Convert.ToInt16(strInput);
Console.Write("Nhap vao so thu hai: ");
strInput = Console.ReadLine();
y = System.Convert.ToInt16(strInput);
break;
}
catch(FormatException)
{
Console.WriteLine("Vui long nhap lai");
}
}while(true);
PerformCalculation add = new PerformCalculation(phepToan.AddMethod);
int tong = add(x,y);
System.Console.WriteLine("Gia tri cua tong: " + tong);
}
}