C# 委託,合并委託(多路廣播委託)

來源:互聯網
上載者:User
委託是一種安全地封裝方法的類型,它與 C 和 C++ 中的函數指標類似。與 C 中的函數指標不同,委託是物件導向的、型別安全的和保險的。委託的類型由委託的名稱定義。下面的樣本聲明了一個名為 Del 的委託,該委託可以封裝一個採用字串作為參數並返回 void 的方法。
public delegate void Del(string message);

構造委派物件時,通常提供委託將封裝的方法的名稱或使用匿名方法。執行個體化委託後,委託將把對它進行的方法調用傳遞給方法。調用方傳遞給委託的參數被傳遞給方法,來自方法的傳回值(如果有)由委託返回給調用方。這被稱為調用委託。可以將一個執行個體化的委託視為被封裝的方法本身來調用該委託。例如:

// Create a method for a delegate.public static void DelegateMethod(string message){    System.Console.WriteLine(message);}

本樣本示範如何組合多路廣播委託。委派物件的一個用途在於,可以使用 + 運算子將它們分配給一個要成為多路廣播委託的委託執行個體。組合的委託可調用組成它的那兩個委託。只有相同類型的委託才可以組合。

- 運算子可用來從組合的委託移除組件委託。

    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)        {            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);        }           }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.