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

C# 委托,合並委托(多路廣播委托)

編輯:C#入門知識

委托是一種安全地封裝方法的類型,它與 C 和 C++ 中的函數指針類似。與 C 中的函數指針不同,委托是面向對象的、類型安全的和保險的。委托的類型由委托的名稱定義。下面的示例聲明了一個名為 Del 的委托,該委托可以封裝一個采用字符串作為參數並返回 void 的方法。 [csharp]  public delegate void Del(string message);     構造委托對象時,通常提供委托將包裝的方法的名稱或使用匿名方法。實例化委托後,委托將把對它進行的方法調用傳遞給方法。調用方傳遞給委托的參數被傳遞給方法,來自方法的返回值(如果有)由委托返回給調用方。這被稱為調用委托。可以將一個實例化的委托視為被包裝的方法本身來調用該委托。例如: [csharp]   // Create a method for a delegate.   public static void DelegateMethod(string message)   {       System.Console.WriteLine(message);   }     本示例演示如何組合多路廣播委托。委托對象的一個用途在於,可以使用 + 運算符將它們分配給一個要成為多路廣播委托的委托實例。組合的委托可調用組成它的那兩個委托。只有相同類型的委托才可以組合。 - 運算符可用來從組合的委托移除組件委托。 [csharp]  class Class1   {            public delegate void PrintDelegate(string name, string id);          public delegate void Del(int i);          static void Main(string[] args)       {           Class1 obj = new Class1();                 PrintDelegate delegate1 = PrintStudent;           PrintDelegate delegate2 = obj.PrinteBook;              // +運算符操作的對象只能是委托對象。           //PrintDelegate multiDel = delegate1 + delegate2;                      //但是 += 右邊的操作對象可以是方法簽名。           //簡單的多播委托。            PrintDelegate multiDel = null;           multiDel += obj.PrinteBook;           multiDel += PrintStudent;           multiDel("test", "123");                        Del d = delegate(int i)           {               Console.WriteLine(++i);           };              d(10);                      Console.Read();       }          /**       * 靜態方法和非靜態方法都可以用於委托的,簽名方法。       * */          //靜態方法       public static void PrintStudent(string name, string id)       {  www.2cto.com         Console.WriteLine("學生信息");           Console.WriteLine("學號:{0}",id);           Console.WriteLine("姓名:{0}",name);       }          //非靜態方法。         public void PrinteBook(string bookName, string code)       {           Console.WriteLine("書籍信息");           Console.WriteLine("編號:" + code);           Console.WriteLine("書名:" + bookName);       }            }    

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