中文字幕一区二区人妻电影,亚洲av无码一区二区乱子伦as ,亚洲精品无码永久在线观看,亚洲成aⅴ人片久青草影院按摩,亚洲黑人巨大videos

解釋什么是Action和Func

發(fā)布于:2021-01-27 10:23:42

0

524

0

Action Func C#

在C#,Action和Func是非常有用的工具,可以減少代碼中的重復和耦合。

遺憾的是,許多開發(fā)人員對它們避而遠之,因為他們并不真正理解它們。

向工具箱中添加Action和Func是改進C代碼的一個非常重要的步驟。

了解它們的用途和使用方法其實并不難,只是需要一點耐心。

思考Action <>的簡單方法

我們中的大多數(shù)人都非常熟悉如何找到重復代碼的部分,將代碼提取到方法中,并使該方法采用參數(shù)來表示差異。

下面是一個很熟悉的小例子:

{xunruicms_img_title}

這些方法中的每一種幾乎都執(zhí)行相同的操作。這里唯一的區(qū)別是蔬菜的類型和蒸熟的時間。

將代碼重構為:

{xunruicms_img_title}

更好的是,現(xiàn)在我們不再用3種不同的方法重復“操作”。

現(xiàn)在讓我們想象一下,我們想要做的不僅僅是蒸汽。我們需要能夠煎或烤蔬菜。我們怎么做呢?

可能我們需要添加一些新的方法來實現(xiàn)這一點。因此我們最終會得到如下結(jié)果:

{xunruicms_img_title}

嗯,又重復了很多次。沒問題。我們就照第一套方法做一個蔬菜烹飪法吧。既然我們總是清潔,然后烹飪,然后上菜,我們就可以把我們要用的烹飪方法傳過來了。

等等,我們怎么做?我們不能只提取烘焙、油炸或蒸汽,因為烘焙、油炸和蒸汽方法是邏輯而不是數(shù)據(jù)。

除非…除非我們能給他們提供數(shù)據(jù)。我們能做到嗎?

我們當然可以,看看這個:

{xunruicms_img_title}

我們和第一次重構時一樣,去掉了重復的代碼,只是這次我們參數(shù)化了方法調(diào)用,而不是數(shù)據(jù)。

如果您理解了這一點,那么您就理解了操作。操作只是一種將方法視為數(shù)據(jù)的方式。現(xiàn)在您可以將所有公共邏輯提取到一個方法中,并傳入發(fā)生變化的數(shù)據(jù)和發(fā)生變化的操作。

恭喜你,你不用創(chuàng)建一個抽象基類和一個巨大的繼承樹就可以完成策略模式了!

所以當你看到Action時,只要想“啊,那意味著我正在傳遞一個方法作為數(shù)據(jù)。”

其實就這么簡單

那么Func <>呢?

如果您了解Action,就可以了解Func。

轉(zhuǎn)換為英語的Func <X,Y,Z>是:“一種將X和Y作為參數(shù)并返回Z的方法?!?/span>

Action和Func之間的唯一區(qū)別是Func的最后一個模板參數(shù)是返回類型。Func具有非void返回值。

謂詞是一個Func,總是返回一個布爾值。

這就是它的全部內(nèi)容了,真的不需要知道更多的東西來確定ActionFunc,以便開始使用它們。