Delegate trong c#

0
137
delegate trong c#
delegate trong c#

Chào mọi người

Hôm nay mình sẽ giải thích cho các bạn hiểu rõ về delegate trong c# nhé :

“Delegate”  có nghĩa là ủy nhiệm hàm ,nó giống như một người đại diện hay đại sứ ,nó có thể triệu gọi phương thức bất kì nơi nào: từ đối tượng này đến đối tượng kia, từ thread này sang thread kia đây là điểm quan trọng nhất của delegate ,các bạn nên nhớ khi sử dụng nó

Khai báo delegate như sau:

[public, private, protected, internal] delegate [kiểu dữ liệu trả về]  Tên Hàm (tham số)

Mình lấy ví dụ cho các bạn dễ hiểu nhé ,lý thuyết thì các bạn có thể đọc tài liệu ,chỗ nào không hiểu thì các bạn cứ comment mình trả lời nhé :

Mình có 2 form : form 1 và form 2 nhé

Form 1 mình sẽ có 1 button và 1 label :

+ Button này khi mình click vào nó sẽ hiện thị Form 2

+ Label này mình sẽ hiện thị kết quả ,khi mình lấy từ Form 2

Form 2 mình sẽ có 1 button và 1 textbox:

+ Button này khi mình click thì nó sẽ truyền kết quả từ textbox qua Form 1

+ Textbox này mình sẽ nhập kết quả vào

Sau đây là đoạn code ví dụ trên nhé :

private void btnForm1_Click(object sender, System.EventArgs e)
{
//Tạo form 2
Form2 form2 = new Form2();

// gọi delegate
form2.passValue = new Form2.PassData(GetData);

// hiện thị Form 2
form2.Show();
}

private void GetData(object sender)
{
// Gán dữ liệu vào lable
    txtLabel1.Text = ((TextBox)sender).Text;
}
==========Form 2
public class Form2 : System.Windows.Forms.Form
{
// Định nghĩa delegate
    public delegate void PassData(object sender);

   //
    public PassData passValue;

   private void btnForm2_Click(object sender, System.EventArgs e)
   {
      if (passValue != null)
      {
          passValue(txtForm2);
       {
      this.Hide();
   }
}

Nếu bạn nào không hiểu thì comment cho mình giải thích cho nhé

Cảm ơn bạn đã đọc bài.