Thông tin tài liệu:
Bài giảng cung cấp cho người học các kiến thức: Cơ chế ủy quyền (delegate), cơ chế multicast delegate, sử dụng event với delegate. Đây là một tài liệu hữu ích dành cho các bạn sinh viên ngành Công nghệ thông tin và những ai quan tâm dùng làm tài liệu học tập và nghiên cứu.
Nội dung trích xuất từ tài liệu:
Bài giảng Lập trình nâng cao: Bài 5 - Lý Anh Tuấn
Object-Oriented Programming Using C#
NGÔN NGỮ LẬP TRÌNH NÂNG CAO
Ver. 1.0 Slide 1 of 28
Object-Oriented Programming Using C#
Mục đích
Trong phần này, chúng ta sẽ học:
Cơ chế ủy quyền(delegate)
Cơ chế multicast delegate
Sử dụng event với delegate
Ver. 1.0 Slide 2 of 28
Object-Oriented Programming Using C#
Giới thiệu Delegate
Delegate trong C# cho phép thay đổi linh động
tham chiếu của phương thức trong một class
Một delegate là biến kiểu tham chiếu, lưu trữ
tham chiếu tới phương thức
Delegate là một cơ chế để gọi phương thức gián
tiếp trong khi chạy. Nó thường được sử dụng để
thực thi sự kiện (event) và các hàm callback cho
chương trình
Để thực thi delegate trong ứng dụng, cần khai
báo delegate, tạo thể hiện delegate và sử dụng
delegate.
Ver. 1.0 Slide 3 of 28
Object-Oriented Programming Using C#
Khai báo Delegates
Các phương thức có thể được tham chiếu bởi
một delegate được xác định bằng khai báo
delegate.
Delegate có thể đại diện cho các phương thức có
cùng chữ ký.
Ver. 1.0 Slide 4 of 28
Object-Oriented Programming Using C#
Khai báo Delegates (tiếp.)
Cú pháp khai báo delegate:
[modifier] delegate();
Ví dụ:
public delegate int DoSomething(int x, int y);
Ver. 1.0 Slide 5 of 28
Object-Oriented Programming Using C#
Khởi tạo Delegates
Gán địa chỉ của phương thức yêu cầu cho đối
tượng delegate.
Phương thức này có thể được thực thi bằng cách
gọi hàm tạo của lớp delegate và truyền tên của
phương thức.
Ver. 1.0 Slide 6 of 28
Object-Oriented Programming Using C#
Khởi tạo Delegates (tiếp)
Ví dụ: Cách gán địa chỉ của phương thức vào một biến delegate:
public void DelegateFunction(string PassValue)
{
// Thực thi yêu cầu
}
//Khai báo delegate
public delegate void MyDelegate(string ArgValue);
public void UseMethod()
{
//Khởi tạo delegate
MyDelegate DelegateObject = new
MyDelegate(DelegateFunction);
}
Ver. 1.0 Slide 7 of 28
Object-Oriented Programming Using C#
Sử dụng Delegate
Có thể gọi delegate bằng cách đưa ra tên của
delegate và truyền các tham số (nếu có).
Sử dụng delegates tương tự như gọi một phương
thức.
Ver. 1.0 Slide 8 of 28
Object-Oriented Programming Using C#
Sử dụng Delegate (tiếp)
Ví dụ 1:
using System;
delegate int NumberChanger(int n);
namespace DelegateCsharp
{
class TestCsharp{
static int num = 10;
public static int AddNum(int p){
num += p;
return num;
}
public static int MultNum(int q){
num *= q;
return num;
}
public static int getNum(){
return num;
}
Ver. 1.0 Slide 9 of 28
Object-Oriented Programming Using C#
Sử dụng Delegate (tiếp)
static void Main(string[] args){
//tao cac doi tuong delegate
NumberChanger nc1 = new NumberChanger(AddNum);
NumberChanger nc2 = new NumberChanger(MultNum);
//goi cac phuong thuc boi su dung cac doi tuong
delegate
nc1(25);
Console.WriteLine(Gia tri la: {0}, getNum());
nc2(5);
Console.WriteLine(Gia tri la: {0}, getNum());
Console.ReadKey();
}
}
}
Ver. 1.0 Slide 10 of 28
Object-Oriented Programming Using C#
Sử dụng Delegate (tiếp)
Ví dụ 2:
using System;
using System.IO;
// Chương trình ghi dữ liệu ra màn hình và file
public class PrintToDevice
{
//Tạo biến của lớp Stream
static FileStream FStream;
static StreamWriter SWriter;
//Định nghĩa một Delegate
//Phương thức gửi chuỗi dữ liệu tới phương thức
public delegate void PrintData(String s);
Ver. 1.0 Slide 11 of 28
Object-Oriented Programming Using C#
Sử dụng Delegate (tiếp)
//Phương thức in chuỗi ra màn hình
public static void WriteConsole (string str)
{
Console.WriteLine({0} Console, str);
}
//Phương thức ghi chuỗi vào file
public static void WriteFile (string s)
{
//Khởi tạo đối tượng stream
FStream = new FileStream(D:\\StoreData.txt,
FileMode.Append, FileAccess.Write);
SWriter = new StreamWriter(FStream);
s = s + File;
//Ghi chuỗi xuống file
SWriter.WriteLine(s);
Ver. 1.0 Slide 12 of 28
Object-Orien ...