天天看點

[C#基礎]Func和Action學習

<a href="http://www.cnblogs.com/wolf-sun/p/3871192.html#t1">委托</a>

<a href="http://www.cnblogs.com/wolf-sun/p/3871192.html#t4">action</a>

<a href="http://www.cnblogs.com/wolf-sun/p/3871192.html#t2">func</a>

<a href="http://www.cnblogs.com/wolf-sun/p/3871192.html#t5">總結</a>

<a href="http://www.cnblogs.com/wolf-sun/p/3293150.html">委托的那些事</a>

關于委托的基本定義,在很久之前的這篇文章中,有個簡單的介紹。稍微回顧一下。

委托是c#中類型安全的,可以訂閱一個或多個具有相同簽名方法的函數指針 聲明委托的方式:delegate 傳回值類型 委托類型名(參數) 例如:
[C#基礎]Func和Action學習
[C#基礎]Func和Action學習
[C#基礎]Func和Action學習

上面介紹了,平時用委托的一般方式,先聲明委托,然後再去使用,有點麻煩,.net中有已經定義好的委托類型,可以拿來直接用。

action委托有兩種方式:無參數無傳回值的委托,有至少一個最多16個的參數無傳回值的泛型委托。

action泛型委托根據輸入參數個數的不同,action委托有十六個重載

[C#基礎]Func和Action學習

用action改寫上面的例子,上面的例子中委托是無傳回值有string類型的輸入參數,是以使用action的泛型版本。

[C#基礎]Func和Action學習
[C#基礎]Func和Action學習

結果:

[C#基礎]Func和Action學習

上面代碼中,列出了action泛型委托的使用方式,以及使用lambda的方式,action也可以使用匿名方法,選擇一種自己上手的來用即可。

如果要用有輸入參數,有傳回值的委托,那麼func委托将滿足你的要求。

func泛型委托,可以沒有輸入參數,但必須有傳回值。根據輸入參數的多少有17個重載。

[C#基礎]Func和Action學習

in:輸入參數

out:輸出參數,也就是傳回值。

一個案例

輸入名字,年齡,性别,對年齡,性别,姓名進行修改後輸出。

[C#基礎]Func和Action學習
[C#基礎]Func和Action學習
[C#基礎]Func和Action學習

func泛型委托,可以沒有輸入參數,但是必須有輸出參數。

action:無參數無傳回值委托。

action&lt;t&gt;:泛型委托,無傳回值,根據輸入參數的個數不同有十六個重載。

func&lt; out t&gt;:無輸入參數,有傳回值。

func&lt;in t,out t&gt;:有輸入參數,有傳回值,根據輸入參數個數不同,有十六個重載。

action和func中可以使用lambda和匿名方法處理方法體内邏輯。

(天太熱,人很躁,在你不知道做什麼的時候,不如靜下來對基礎進行查漏補缺,能掌握一點是一點,别總抱怨,總煩躁,就算你抱怨,煩躁,最後該完成的事還是你的,不多不減就在那裡,夏天這天氣,太煩躁,啥事都不做了嗎?難道敲代碼不是一件開心的事嗎?)

部落格位址:

<a href="http://www.cnblogs.com/wolf-sun">http://www.cnblogs.com/wolf-sun/</a>

部落格版權:

本文以學習、研究和分享為主,歡迎轉載,但必須在文章頁面明顯位置給出原文連接配接。

如果文中有不妥或者錯誤的地方還望高手的你指出,以免誤人子弟。如果覺得本文對你有所幫助不如【推薦】一下!如果你有更好的建議,不如留言一起讨論,共同進步!

再次感謝您耐心的讀完本篇文章。

轉載:http://www.cnblogs.com/wolf-sun/p/3871192.html