Ở đây tôi sẽ giải thích các đại biểu, đại biểu phát đa hướng và cách sử dụng của họ .. Đại biểu là một loại chứa tham chiếu phương thức trong một đối tượng. Nó cũng được gọi là một con trỏ hàm an toàn loại. Chúng ta có thể nói một đại biểu là một loại 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ể liên kết thể hiện của nó với bất kỳ phương thức nào với 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 để truyề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 là 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 Việc sử dụng hiệu quả của đại biểu giúp cải thiện hiệu suất của ứng dụng Được sử dụng để gọi một phương thức không đồng bộ. Có một số tài sản của đạ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.
đại biểu công khai type_of_delegate ủy nhiệm_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();
}
}
}
Đại biểu Multicast là gì?
Nó là một đại biểu giữ tham chiếu của nhiều hơn một phương thức. Các đại biểu Multicast phải chỉ chứa các phương thức trả về void, nếu không có 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
}
}
Ở đây, Delegate được thêm bằng toán tử + = và được loại bỏ bằng toán tử - =.
Các loại đại biểu được lấy từ lớp Delegate trong .NET Framework. Các loại đại biểu được niêm phong, họ không thể bắt nguồn. Bởi vì đại biểu khởi tạo là một đối tượng, nó có thể được truyền dưới dạng tham số hoặc được gán cho 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 làm 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à một cuộc gọi lại không đồng bộ.