標籤:通過 method 回調 write 產生 ges begin blog 特性
有些.NET中的進階特性,比如:委託!有一種怎麼也搞不懂的趕腳...部落格讀了好幾篇,代碼也動手寫了,書中的一些介紹也看了,各種搜尋關於委託的,至今還處於"會用"的階段。該怎麼研究一個進階特性,這是個問題。還是本來這些特性,你會用就可以了?
語言越多,感覺會越迷惑,自己想用最少的語言,最多的代碼來總結下委託這個東西;
0、delegate
1、類似於C++中的函數指標,安全的函數指標,提供了程式回調指定方法的機制。
2/委託既可以接受執行個體方法,也可以接受靜態方法;
using System;namespace _IT200.第6章_進階特性{ //這是一個委託,就這麼簡單的聲明了,然後知道怎麼用就可以了. //就像年齡小的時候,不會喝酒,長大了喝幾次就會喝了...你和委託也就是差一個醉了... public delegate void 委託我來監視這是第幾個方法(int i); class 委託 { public void method(int i) { Console.WriteLine("這是第{0}個方法..", i); } //靜態方法 public static void method_static(int i) { Console.WriteLine("這是第{0}靜態方法...", i); } static void Main() { Console.WriteLine("委託..."); 委託 w = new 委託(); //接受執行個體方法 委託我來監視這是第幾個方法 委託執行個體 = new 委託我來監視這是第幾個方法(w.method); //接受靜態方法 委託我來監視這是第幾個方法 委託執行個體_1 = new 委託我來監視這是第幾個方法(method_static); //本質上,委託的調用其實就是執行了在定義委託時所產生的Invoke方法 委託執行個體(0); //Invoke轉到定義是指向→"委託我來監視這是第幾個方法" //Why?因為這個方法是由C#編譯器自動幫我們完成的,可以通過Reflector驗證一下↓ //:會發現還包含一個名為BeginInvoke和EndInvoke的方法。 委託執行個體.Invoke(1); //委託執行個體(2); == 委託執行個體.Invoke(2); Console.ReadKey(); } }}
運行結果:
.NET之委託