精華區beta NUU_CSIE 關於我們 聯絡資訊
上一篇提到delegate的部份 雖然大致上基本的東西都講清楚了 不過有些實作上的規矩還是來強調一下好了,以下: public delegate type DelegateName( Parameter ); 像上面這個delegate的宣告,就必須在一個class裡面 不可以在namespace底下直接宣告 Eg. (1) namespace NameSpace_Name { public delegate void DelegateName ( Parameter ); //Wrong ...... ...... ...... ...... } (2) namespace NameSpace_Name { class Program { public delegate void DelegateName ( void ); //Right } ...... ...... ...... ...... } (3) namespace NameSpace_Name { delegate void DelegateName ( void ) //Right } 再來,delegate一次可以做多少事情? 答案:不知道,我沒測過他的極限 這也就是說,一個delegate可以做很多事情,但是是依序進行 這個可以做很多事情的delegate,稱之為Multicast(包涵多重委派多重事件) 接著就要問,怎麼讓他一次做很多事情? 很簡單,只要將函數用「+=」的方式加入這個delegate中 然後呼叫這個delegate,就可以依序幫你做完你指定的工作 所以,再來個範例吧 Eg. public delegate void SH_Delegate( void ); public static void Show( void ) { Console.WriteLine("Hi, Mr.Hill ."); } public static void Say( void ) { Console.WriteLine("Say Love for you ."); } private static void main( string[] args ) { SH_Delegate FuncPtr = new SH_Delegate(Show); FuncPtr = new SH_Delegate(Say); FuncPtr(); } 在main中,我指定了Show Function函數給FuncPtr 下面又用「+=」將Say Function給FuncPtr 所以目前的FuncPtr會有兩個Function 但是他是以Queue的方式來呼叫所assign的函數,就是前面說提到的「依序」 也就是說,在呼叫FuncPtr之後 會先執行Show,在執行Say 呃,這篇似乎又沒講到Event 那下一篇再見(?) -- ˍˍ 很多人在即將失去的時候,不知他即將失去,最後他就真正失去 ▕天險▏ 其實,一個不曾失去的人最可憐。因為,他永遠學不會什麼叫珍惜。▕刀藏▏  ̄ ̄ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.118.46.59
sct830:前幾天我也在看委派的東西 可是我寫在網誌上 可以參考看 05/09 22:14
sct830:我不會縮網址= = www.wretch.cc/blog/stt830/32257454 05/09 22:15
godman362:其中你提到的Invoke 05/10 07:17
godman362:其實可用可不用 05/10 07:18
godman362:FuncPtr.Invoke()和FuncPtr()其實一樣 05/10 07:18
※ 編輯: godman362 來自: 122.118.55.133 (05/10 22:10)