【原文】http://www.cnblogs.com/liqingwen/p/6046171.html
序
上篇《C# 知識回顧 - 委托 delegate》已經介紹委托的基礎知識,這裡是對其進行補充說明以及深入了解。
目錄
委托可以與命名方法關聯。 使用命名方法對委托進行實例化時,該方法將作為參數傳遞,例如:
1 class Program
2 {
3 //聲明一個委托
4 delegate void MyDel(string message);
5
6
7 static void Main(string[] args)
8 {
9 //使用靜態方法作為參數實例化委托
10 MyDel del = Print;
11 }
12
13 //聲明一個方法
14 private static void Print(string message)
15 {
16 Console.WriteLine(message);
17 }
18 }
這被稱為使用命名的方法。 使用命名方法構造的委托可以封裝靜態方法或實例方法。在早期版本的 C# 中,命名方法是對委托進行實例化的唯一方式。 但是,在不希望付出創建新方法的系統開銷時,C# 使您可以對委托進行實例化,並立即指定委托在被調用時將處理的代碼塊。 代碼塊可以包含 lambda 表達式或匿名方法。
【備注】①作為委托參數傳遞的方法必須與委托聲明具有相同的簽名。②委托實例可以封裝靜態或實例方法。③盡管委托可以使用 out 參數,但建議您不要將其用於多路廣播事件委托,因為您無法知道哪個委托將被調用。 示例1:以下是聲明及使用委托的一個簡單示例。 注意,委托 MyDel 和關聯的方法 Print 具有相同的簽名(即便方法的參數名稱 m 和 n 的位置替換) 1 class Program
2 {
3 //聲明一個委托
4 delegate void MyDel(int n, int m);
5
6 static void Main(string[] args)
7 {
8 //使用靜態方法 Print 作為參數實例化委托
9 MyDel del = Print;
10 Console.WriteLine("准備好了哦,要開始調用委托了哦!");
11
12 for (int i = 0; i < 10; i++)
13 {
14 Print(i, 1);
15 }
16
17 Console.Read();
18 }
19
20 //聲明一個方法
21 private static void Print(int m, int n)
22 {
23 Console.Write(m - n + " ");
24 }
25 }

--預覽版,整理中--