1. 程式人生 > >C#中的委託_多播委託_以及事件的概要

C#中的委託_多播委託_以及事件的概要

1:委託

           我們定義一段程式碼:Person   obj   =   new   Person   (); ,就是說 obj 這個【引用】型別指向了一個新的物件   【  new   Person   ()】 

           同樣的,委託也是一種【引用】型別,一種能夠指向方法的型別

。在方法中有無引數的方法和帶引數的方法,引數也是一種型別,所以我們就可以將這種  ”委託型別”,傳入到方法中。通俗點說:委託可以代表一個方法或多個方法(多播委託)。

namespace 多播委託
{

  public delegate void DelTest1( string  s );//申明一個委託(委託可以指向多個方法),申明的委託要與被委託的方法具有相同的簽名;
    class Program
    {

        static    void

    Main(string[] args)
        {

                DelTest1    dels = Test1;

                / /dels += Test2;   / /多播委託 ,dels這個委託可以指向多個方法,這裡不註釋的話控制檯顯示兩個方法的輸出

               

dels ("李梅");//最後會在控制檯輸出  Hell李梅 (這裡呼叫了委託,也可以將委託傳入方法

                 Console.ReadKey();

        }

        public    static    void Test1( string  s ){  Console.WriteLine("Hello" +  s) ;   }    / /被委託的方法 

         public    static    void Test2( string  s ){  Console.WriteLine("你好啊" +  s) ;   } 

      }

}

在上面程式碼中    / /dels += Test2;  這段程式碼 變為dels = Test2;   那麼只會輸出Test2的內容,也就是說吧 +=  變為   =,會覆蓋以前委託的內容。

2:事件: 是一個委託型別的實列,只能在定義它的類的內部來進行訪問。在類外面智慧註冊事件的響應方法。

在類的內部定義事件 :public event  DelTest1  DelTest1Event;  / /定義了一個事件,在類的外部給事件新增事件響應方法,可以理解為一個私有的委託實列,給事件新增事件方法是和委託是一樣的。