C 中的函式 委託與lanbda表示式

2021-09-08 23:04:54 字數 1360 閱讀 5506

以下幾個例子(兩個整數相加): 

(2)        delegate

intfsum(int x, int y);

(3)        fsum sum2 = (x, y) => x + y;

(4)        int sum3(int x, int y)=(x,y)=>x+y;

(1)是c系列中定義函式的經典寫法。

(2),(3)引入委託型別

在使用中(1)中的函式和(3)中的委託,沒有多大差別,好像是乙個東東一樣。

(4),(5)不能通過編譯 ,其中(5)是對(4)的簡化。

加上匿名函式,匿名委託的概念,對於非軟體開發專業的消費者是挺費解的。

其實可以把委託與函式統一起來,只有複雜邏輯的函式定義,才需要使用(1)形式。簡短函式使用(5)這種形式就夠了。

不知以後c#會不會加入函式定義的簡化形式。 

下面是相同形式的連乘的形式:

static

int mul1(params

int x)

delegate

intfmum(params

int x);

static

fmum mul2 = x => x.aggregate((x, y) => x * y);

int mul3(params

int x)=x=> x.aggregate((x,y)=>x*y);

int mul4(params

int x)= x.aggregate((x,y)=>x*y);

後面附兩個例子:

public

func

<

int,

int>

fibonacci=n

=>

n<

1?1:

fibonacci(n

-1) +

fibonacci(n

-2); public

static

complex

add(

complex

c1,

complexc2)

= public

static

complex

add(

complex

c1,

complexc2)

= public

static

complex

add(

complex

c1,

complexc2)

=new

complex(x

=c1.x

+c2.x

,y=c1

.y+c2

.y); 

c 中的委託與事件

c 委託與事件 一 委託 關鍵字 delegate 委託是c 中的一種型別,它實際上是乙個對某個方法引用的類 委託是一種引用方法型別 一旦為委託分配了方法 委託將與該方法有相同完全的行為 委託具有引數 和返回值 delegate類能擁有乙個簽名 signature 只能持有與他簽名相匹配的方法的引用...

C 中的事件與委託

delegate委託 delegate是c 中的一種型別,它實際上是乙個能夠持有對某個方法的引用的類。與其它的類不同,delegate類能夠擁有乙個簽名 signature 並且它 只能持有與它的簽名相匹配的方法的引用 它所實現的功能與c c 中的函式指標十分相似。它允許你傳遞乙個類a的方法m給另乙...

C 中的委託與事件

寫這篇博文的目的是要記錄一下學習委託與事件的心的與 方便之後查閱 1 委託,是乙個函式的簽名,規定了函式的返回值與引數列表。類似於這類函式的乙個 簽名相同但是用途不同的函式s,要執行的時候就通過 來執行,使得函式執行得到諸多的方便。delegate相當於乙個類,具有類的一些特性。2 事件,事件就是應...