標籤:類 可擴充
剛開始在C#視頻中就看到了委託,到了大話中首先還是看這些基礎知識,對於委託我始終不太理解,因此我就上網查了一些資料並且結合自己的理解,來介紹一下委託。
【漢語】
把事情託付給別人或別的機構。
【百度給出的定義】
委託是一個類,它定義了方法的類型,使得可以將方法當作另一個方法的參數來進行傳遞,這種將方法動態地賦給參數的做法,可以避免在程式中大量使用If-Else(Switch)語句,同時使得程式具有更好的可擴充性。
【我的理解】
委託相當於就是一個函數,它有某種功能,其變數是一種方法,通過委託能夠間接的調用該方法。實際上委託時對函數的封裝。
理解了委託之後我們應該怎樣應用呢?首先就是要定義一個委託,這跟一般的類沒有差別,感覺到了熟悉。
//聲明委託 CatShoutEventHandler public delegate void CatShoutEventHandler();
定義一個方法
class Mouse{ private string name; public Mouse(string name) { this.name = name; } //定義了一個方法 public void Run() { Console.WriteLine("老貓來了,{0}快跑!",name ); }} 執行個體化該委託,並實現調用
cat.CatShout += new Cat.CatShoutEventHandler(mouse1.Run); cat.CatShout += new Cat.CatShoutEventHandler(mouse2.Run);
注意:委託執行個體化後還是一個委託,通過委託調用mouse.Run的方法,實現間接調用,避免直接去修改Mouse這個類,這符合開放-封閉原則。
【總結】
委託,就是實現了調用一個方法,一旦委託分配了方法,委託將具有與該方法完全相同的行為。這是我暫時的理解,在以後模式中還會再次深刻討論委託,期待對委託有更深刻的理解。
C#委託