程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> [.NET] C# 委托,

[.NET] C# 委托,

編輯:關於.NET

[.NET] C# 委托,


C# 委托

【原文】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     }

 

 

 

 

--預覽版,整理中--

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved