C#中的委託_多播委託_以及事件的概要
1:委託
我們定義一段程式碼:Person obj = new Person (); ,就是說 obj 這個【引用】型別指向了一個新的物件 【 new Person ()】
同樣的,委託也是一種【引用】型別,一種能夠指向方法的型別
namespace 多播委託
{
public delegate void DelTest1( string s );//申明一個委託(委託可以指向多個方法),申明的委託要與被委託的方法具有相同的簽名;
class Program
{
static void
{
DelTest1 dels = Test1;
/ /dels += Test2; / /多播委託 ,dels這個委託可以指向多個方法,這裡不註釋的話控制檯顯示兩個方法的輸出
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; / /定義了一個事件,在類的外部給事件新增事件響應方法,可以理解為一個私有的委託實列,給事件新增事件方法是和委託是一樣的。