Delegate trong C#

Delegate là con trỏ hàm, có thể trỏ (tham chiếu) đến bất kỳ phương thức nào cùng signature với delegate, cùng khai báo hàm (tham số, kiểu dữ liệu).

Khi thực hiện gọi delegate -> thực ra gọi các hàm mà delegate tham chiếu (trỏ) đến

class Delegate_Test
{

public event PrintMe Printed;
public void PrintToFile(string s)
{
Console.WriteLine(“Print out from Print2File”);
Printed(“Finish”); //Raise event
}
public void Print(string s)
{
Console.WriteLine(“Print out from Print”);
}

}

Test delegate

public delegate void PrintMe(string me);
class Program
{

static void Main(string[] args)
{

Delegate_Test test = new Delegate_Test();
test.Printed += new PrintMe(test_Printed); //Đăng ký sự kiện

PrintMe p = null;
p += new PrintMe(test.Print); //Trỏ delegate đến phương thức cần gọi
p += new PrintMe(test.PrintToFile); //Trỏ đến phương thức cần gọi

p(“Testing delegate”);//Call delegate -> call methods
Console.ReadLine();

}

static void test_Printed(string me)
{
Console.WriteLine(“Event Raise, print finished”);
}

}

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s