委託
委託的那些事
關於委託的基本定義,在很久之前的這篇文章中,有個簡單的介紹。稍微回顧一下。
委託是c#中型別安全的,可以訂閱乙個或多個具有相同簽名方法的函式指標
宣告委託的方式:delegate 返回值型別 委託型別名(引數)
例如:1 delegate void say(string strcontent);
如果想使用該委託,需要乙個對應的方法。
複製**
1 ///
2 /// 委託對應方法
3 ///
4 ///
5 private static void chinesesay(string strcontent)
6 複製**
簡單的呼叫:
複製**
1 static void main(string args)
2
複製**
上面介紹了,平時用委託的一般方式,先宣告委託,然後再去使用,有點麻煩,.net中有已經定義好的委託型別,可以拿來直接用。
action
action委託有兩種方式:無引數無返回值的委託,有至少乙個最多16個的引數無返回值的泛型委託。
1 // 摘要:
2 // 封裝乙個方法,該方法不具有引數並且不返回值。
3 [typeforwardedfrom("system.core, version=3.5.0.0, culture=neutral, publickeytoken=b77a5c561934e089")]
4 public delegate void action();
action泛型委託根據輸入引數個數的不同,action委託有十六個過載
用action改寫上面的例子,上面的例子中委託是無返回值有string型別的輸入引數,所以使用action的泛型版本。
複製**
1 class program
2 歲了", s);//方式三
8 sayhello("您好");
9 sayname.invoke("我叫wolfy");
10 iasyncresult result = sayage.begininvoke("27", callback, "愛好女");
11 if (result.iscompleted)
12
15 console.read();
16 }
17 18 private static void callback(iasyncresult ar)
19 ,我不搞基",ar.asyncstate.tostring());
21 }
22 ///
23 /// 委託對應方法
24 ///
25 ///
26 private static void chinesesay(string strcontent)
27
30 }
上面**中,列出了action泛型委託的使用方式,以及使用lambda的方式,action也可以使用匿名方法,選擇一種自己上手的來用即可。
func
如果要用有輸入引數,有返回值的委託,那麼func委託將滿足你的要求。
func泛型委託,可以沒有輸入引數,但必須有返回值。根據輸入引數的多少有17個過載。
in:輸入引數
out:輸出引數,也就是返回值。
乙個案例
輸入名字,年齡,性別,對年齡,性別,姓名進行修改後輸出。
複製**
1 public class person
2
4 public int age
5 public bool gender
6 ///
7 /// 重寫tostring方法,方便輸出結果
8 ///
9 ///
10 public override string tostring()
11
14 }
15 class program
16 ;//lambda表示式方式
22 func funupdatename = delegate(person p2)//匿名方法
23 ;
27 person p = new person() ;
28 person result = funcupdateage(p);
29 console.writeline(result.tostring());
30 console.writeline(funcupdategender(p).tostring());
31 console.writeline(funupdatename(p).tostring());
32 console.read();
33 }
34 static person updateage(person p)
35
39 40 }
func泛型委託,可以沒有輸入引數,但是必須有輸出引數。 總結
action:無引數無返回值委託。
action:泛型委託,無返回值,根據輸入引數的個數不同有十六個過載。
func< out t>:無輸入引數,有返回值。
func:有輸入引數,有返回值,根據輸入引數個數不同,有十六個過載。
action和func中可以使用lambda和匿名方法處理方法體內邏輯。
(天太熱,人很躁,在你不知道做什麼的時候,不如靜下來對基礎進行查漏補缺,能掌握一點是一點,別總抱怨,總煩躁,就算你抱怨,煩躁,最後該完成的事還是你的,不多不減就在那裡,夏天這天氣,太煩躁,啥事都不做了嗎?難道敲**不是一件開心的事嗎?)
C 基礎 Func和Action學習
委託 action func 總結委託的那些事 關於委託的基本定義,在很久之前的這篇文章中,有個簡單的介紹。稍微回顧一下。委託是c 中型別安全的,可以訂閱乙個或多個具有相同簽名方法的函式指標 宣告委託的方式 delegate 返回值型別 委託型別名 引數 例如 1 delegate void say...
c 中Action和Func委託
泛型acion委託表示引用乙個void返回型別的方法,至多可以傳遞至16個引數型別,沒有泛型的action類可呼叫沒有引數的方法,如 class test static void main string args 泛型func委託表示引用帶返回型別的方法,至多可以傳遞16個引數型別和乙個返回型別,f...
C 委託變數Action和Func
c 中的委託 簡單來說,使用委託可以將多個方法繫結到同乙個委託變數,當呼叫此變數時,可以依次呼叫所有方法。action委託 1.action a printstring action可以指向乙個沒有返回值,也沒有引數的方法。actiona printstring action 還可以接受沒有返回值,...