C 基礎 Func和Action學習

2021-09-23 19:50:11 字數 3200 閱讀 8082

委託

action

func

總結委託的那些事

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

委託是c#中型別安全的,可以訂閱乙個或多個具有相同簽名方法的函式指標

宣告委託的方式:delegate 返回值型別 委託型別名(引數)

例如:

1

delegate

void say(string strcontent);

如果想使用該委託,需要乙個對應的方法。

1

///2

///委託對應方法

3///

4///

5private

static

void chinesesay(string

strcontent)

6

簡單的呼叫:

1

static

void main(string

args)

2

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

action委託有兩種方式:無引數無返回值的委託,有至少乙個最多16個的引數無返回值的泛型委託。

1

//摘要: 2//

封裝乙個方法,該方法不具有引數並且不返回值。

3 [typeforwardedfrom("

system.core, version=3.5.0.0, culture=neutral, publickeytoken=b77a5c561934e089")]

4public

delegate

void action();

action泛型委託根據輸入引數個數的不同,action委託有十六個過載

用action改寫上面的例子,上面的例子中委託是無返回值有string型別的輸入引數,所以使用action的泛型版本。

1

class

program2歲了

", s);//

方式三8 sayhello("您好"

);9 sayname.invoke("

我叫wolfy");

10 iasyncresult result = sayage.begininvoke("

27", callback, "

愛好女"

);11

if(result.iscompleted)

1215

console.read();16}

1718

private

static

void

callback(iasyncresult ar)

19,我不搞基

",ar.asyncstate.tostring());21}

22///

23///

委託對應方法

24///

25///

26private

static

void chinesesay(string

strcontent)

2730 }

結果:

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

如果要用有輸入引數,有返回值的委託,那麼func委託將滿足你的要求。

func泛型委託,可以沒有輸入引數,但必須有返回值。根據輸入引數的多少有17個過載。

in:輸入引數

out:輸出引數,也就是返回值。

乙個案例

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

1

public

class

person24

public

int age

5public

bool gender

6///

7///

重寫tostring方法,方便輸出結果

8///

9///

10public

override

string

tostring()

1114}15

class

program

16;//

lambda表示式方式

22 funcfunupdatename = delegate(person p2)//

匿名方法23;

27 person p = new person() ;

28 person result =funcupdateage(p);

29console.writeline(result.tostring());

30console.writeline(funcupdategender(p).tostring());

31console.writeline(funupdatename(p).tostring());

32console.read();33}

34static

person updateage(person p)

3539

40 }

結果:

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

action:無引數無返回值委託。

action:泛型委託,無返回值,根據輸入引數的個數不同有十六個過載。

func< out t>:無輸入引數,有返回值。

func:有輸入引數,有返回值,根據輸入引數個數不同,有十六個過載。

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

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

部落格版權:

C 基礎 Func和Action學習

委託 委託的那些事 關於委託的基本定義,在很久之前的這篇文章中,有個簡單的介紹。稍微回顧一下。委託是c 中型別安全的,可以訂閱乙個或多個具有相同簽名方法的函式指標 宣告委託的方式 delegate 返回值型別 委託型別名 引數 例如 1 delegate void say string strcon...

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 還可以接受沒有返回值,...