Truyền khối mã làm tham số delegate trong C#, sử dụng các phương thức nặc danh (Anonymous methods). Các phương thức nặc danh là những phương thức không có tên, chỉ có thân phương thức.
Đây là cách khai báo phương thức nặc danh:
delegate void DemoMethod(int n);
...
DemoMethod dm = delegate(int a)
{
Console.WriteLine("Our Anonymous Method: {0}", a);
};
Như trên, phần thân của phương thức nặc danh là:
Console.WriteLine("Our Anonymous Method: {0}", a);
Ví dụ
Bạn có thể chạy mã sau để triển khai phương thức nặc danh trong C#:
using System;
delegate void Demo(int n);
namespace MyDelegate
{
class TestDelegate
{
static int num = 10;
public static void DisplayAdd(int p)
{
num += p;
Console.WriteLine("Named Method: {0}", num);
}
public static void DisplayMult(int q)
{
num *= q;
Console.WriteLine("Named Method: {0}", num);
}
public static int getNum()
{
return num;
}
static void Main(string[] args)
{
Demo dm = delegate(int x)
{
Console.WriteLine("Anonymous Method: {0}", x);
};
// gọi delegate dùng phương thức nặc danh
dm(15);
// khởi tạo delegate dùng phương thức có tên
dm = new Demo(DisplayAdd);
// gọi delegate dùng phương thức có tên
dm(10);
// khởi tạo delegate dùng phương thức có tên khác
dm = new Demo(DisplayMult);
// gọi delegate dùng phương thức có tên
dm(4);
Console.ReadKey();
}
}
}
Kết quả
Anonymous Method: 15 Named Method: 20 Named Method: 80