Multicast Delegate trong C # là gì?

{{FormatNumbertoThousand(model.total_like)}} lượt thích
236 lượt xem
C#/.Net master

Delegate chỉ có thể gọi một tham chiếu phương thức đã được đóng gói vào delegate. Một số delegate có thể giữ và gọi nhiều phương thức. Delegate như vậy được gọi là Multicast Delegate. Multicast Delegate (còn được gọi là Combinable Delegate) phải đáp ứng các điều kiện sau:

  • Kiểu trả về của Multicast Delegate phải là void. Không có tham số nào của Multicast Delegate có thể được khai báo dưới dạng tham số đầu ra bằng cách sử dụng từ khóa out.
  • Instance của Multicast Delegate được tạo bằng cách kết hợp hai delegate, danh sách lệnh gọi được hình thành bằng cách nối danh sách lệnh gọi của hai toán hạng của thao tác cộng (+). Các delegate được gọi theo thứ tự được thêm vào.

Trên thực tế, tất cả các delegate trong C# là Multicast Delegate, ngay cả khi chúng chỉ có một phương thức duy nhất. Ngay cả các hàm anonymous và lambdas cũng là Multicast Delegate mặc dù theo định nghĩa, chúng chỉ có một mục tiêu duy nhất.

public partial class MainPage : PhoneApplicationPage
{
   public delegate void MyDelegate(int a, int b);
   // Constructor
   public MainPage()
   {
       InitializeComponent();

       // Multicast delegate
       MyDelegate myDel = new MyDelegate(AddNumbers);
       myDel += new MyDelegate(MultiplyNumbers);
       myDel(10, 20);
    } 

    public void AddNumbers(int x, int y)
    {
       int sum = x + y;
       MessageBox.Show(sum.ToString());
    } 

    public void MultiplyNumbers(int x, int y)
    {
        int mul = x * y;
        MessageBox.Show(mul.ToString());
    }
}
{{login.error}}