Ở đây tôi sẽ giải thích các đại biểu, đại biểu multicast và sử dụng của họ .. đại biểu là một loại nắm giữ tài liệu tham khảo phương pháp (s) trong một vật. Nó cũng được gọi là một con trỏ hàm an toàn kiểu. Chúng ta có thể nói một delegate là một kiểu xác định chữ ký phương thức.
Khi bạn khởi tạo một đại biểu, bạn có thể kết hợp cá thể của nó với bất kỳ phương thức nào có chữ ký tương thích. Bạn có thể gọi (hoặc gọi) phương thức thông qua thể hiện ủy nhiệm. Các đại biểu được sử dụng để chuyển các phương thức làm đối số cho các phương thức khác. Trình xử lý sự kiện không có gì khác hơn các phương thức được gọi thông qua các đại biểu. Ưu điểm của việc sử dụng đại biểu là, Đóng gói cuộc gọi của phương thức từ người gọi Sử dụng hiệu quả đại biểu cải thiện hiệu suất của ứng dụng Được sử dụng để gọi phương thức không đồng bộ. Có một số tính chất của các đại biểu là
Delegates are like C++ function pointers but are type safe.
Delegates allow methods to be passed as parameters.
Delegates can be used to define callback methods.
Delegates can be chained together; for example, multiple methods can be called on a single event.
Methods do not have to match the delegate signature exactly.
public delegate type_of_delegate delegate_name() // Tuyên bố
You can use delegates without parameters or with parameter list
If you are referring to the method with some data type then the delegate which you are declaring should be in the same format. This is why it is referred to as type safe function pointer. Here I am giving an example with String.
Ví dụ sau đây cho thấy một hoạt động đại biểu:
namespace MyDelegate
{
class Program
{
private delegate void Show(string s);
// Create a method for a delegate.
public static void MyDelegateMethod(string me
ssage)
{
System.Console.WriteLine(message);
}
static void Main(string[] args)
{
Show p = MyDelegateMethod;
p("My Delegate");
p.Invoke("My Delegate");
System.Console.ReadLine();
}
}
}
Multicast là gì Đại biểu?
Đây là đại biểu chứa tham chiếu của nhiều phương pháp. Các đại biểu Multicast chỉ phải chứa các phương thức trả về void, nếu không có một ngoại lệ thời gian chạy.
delegate void MyMulticastDelegate(int i, string s);
Class Class2
{
static void MyFirstDelegateMethod(int i, string s)
{
Console.WriteLine("My First Method");
}
static void MySecondDelegateMethod(int i, string s)
{
Console.WriteLine("My Second Method");
}
static void Main(string[] args)
{
MyMulticastDelegate Method= new MyMulticastDelegate(MyFirstDelegateMethod);
Method+= new MyMulticastDelegate (MySecondDelegateMethod);
Method(1,"Hi"); // Calling 2 Methodscalled
Method-= new MyMulticastDelegate (MyFirstDelegateMethod);
Method(2,"Hi"); //Only 2nd Method calling
}
}
Tại đây Đại biểu được thêm bằng toán tử + = và xóa bằng toán tử - =.
Loại đại biểu có nguồn gốc từ lớp Đại biểu trong Khuôn khổ .NET. Các loại đại biểu được niêm phong - chúng không thể được bắt nguồn. Do đại biểu được khởi tạo là một đối tượng, nó có thể được chuyển như một tham số hoặc được gán cho một thuộc tính. Điều này cho phép một phương thức để chấp nhận một đại biểu như một tham số, và gọi cho đại biểu vào một thời gian sau đó. Điều này được gọi là gọi lại không đồng bộ.
tò mò, bạn đã phản hồi như thế nào để chúng tôi có thể cho bạn biết cách bạn có thể sửa nó? –