標籤:blog 使用 io 2014 art cti 代碼 div
代理是一種特殊的,指向某個方法模組所在的地址。一般來講,那個方法模組,能夠是一個普通的方法,很多其它的時候,是一團匿名的lamda運算式,即一個匿名方法。如今簡單理解一下代理的簡寫方式,即Actionkeyword。
class A { B b = new B(); public delegate string Show(string result); public string Execute() { Show s = new Show(b.MyShow); string str = s.Invoke("ttt"); return str; } } class B { public string MyShow(string s) { return s + ">>>>>>>>>"; } } static void Main(string[] args) { A a = new A(); a.Execute(); }這樣,使用A的時候,僅僅改變B中MyShow的代碼,就能定製A中Execute的運行結果。具有相同功能的代碼,我們用Action類型來完畢。
class C { D d = new D(); Action<string> action; public void Execute() { action = d.MyShow2; action.Invoke("ttt"); } } class D { public void MyShow2(string s) { Console.WriteLine(s + ">>>>>>>>>"); } } static void Main(string[] args) { A a = new A(); a.Execute(); }
這段代碼與上邊的代碼具有相同的效果。能夠看出,從本質上講,就是Action就是delegate的簡化模式,就假設lamda運算式來簡化匿名方法一樣。當匿名方法必需要有返回值的時候,我們使用Fun類型來處理。用法基本上有Action相同,僅僅是對於參數,前幾個是傳入值,最後一個是返回值。