C 的Delegate 為什麼沒在其他主流語言中普及?

時間 2021-05-29 22:57:47

1樓:guoking

我學了c語言再學的c#,在我眼中,delegate本質上就是函式指標。delegate被我稱為代表,或函式代表。因為它裡面含的是函式的指標,代表了某個函式。

翻譯成委託是個什麼鬼?delegate本意不就是代表嗎?既然是函式指標,或者說類似於函式指標,那麼在其他語言中應該是無處不在的。

2樓:zanxas

delegate就是把函式包裝成物件,然後傳來傳去。

為了滿足high order function(函式做引數和返回值)的需求,c#就搗鼓出了delegate。

在一些支援函式物件的語言(js,Python)中自然不需要把它包起來。

High Order Function 例項:

SICP python版原文:

defsummation(n

,term

,next

):total,k

=0,1

while

k<=n:

total,k

=total

+term(k

),next(k

)return

total

C#delegate版本 (Func<>相當於 singlecast delegate)

public

double

Sumation

(intn,

Func

double

>term

,Func

int>

next

)return

total;}

3樓:Belleve

其他有 closure 的語言裡面一般就直接叫 function 了,multicast 的也很容易模擬。

C# 這個名字和 J++ 有關,那時候 anonymous function、closure 還不流行。

為什麼微軟沒在Windows office裡面加廣告

尼歐 免費模式確實是更先進的模式,但是肯定不能以加廣告的形式,這個可是生產力軟體,明顯彈廣告會降低生產力 微軟也已經想通了,現在加了onedrive的365,幾乎已經算是免費的。買網盤送軟體,軟體就算是免費了 runner time 微軟的office在企業端依然掙錢,所以沒有動力針對個人免費。針對...

病毒為什麼沒在蝙蝠烹飪過程中殺死

Kevin 你都說烹飪過程中了,如果一直以一種低火在烹飪,那麼溫度就上不去了。蝙蝠,最近這個很出名啊,跟穿山甲一樣 蝙蝠,身上有上千種致命的病毒,尤其是埃博拉 sars再到新型的nOv什麼的,所以烹飪的話,除非要煮的超級爛,也就是說要一定的溫度 足夠的時間,才能完全殺死,不是像吃花蚶一樣殼一開就可以...

井然和真真為什麼沒在一起?

小臭橘呀 唉不在一起好不在一起秒不在一起我就呱呱叫呀 看到龍哥拍吻戲我都要酸死了 哦!我又跑題了.就是井然不是男主沒有男主光環不配和女主在一起唄 北京律師 你要說同濟出來的建築師能走向世界,敢和義大利本土設計師掰手腕,這我信。畢竟同濟建築世界都是名列前茅。http www.bjlslaw.com 對...