簡體   English   中英

C#中的MultiCast委托

[英]MultiCast delegates in c#

當我們使用多播委托時,僅返回最后一個方法值。 我們是否有任何實際情況需要執行所有方法,但僅應像多播委托那樣返回最后一個方法值。

並且事件與多播委托之間是否有任何關系?如果是,它們如何鏈接?

謝謝。

事件和多播委托之間是否有任何關系?

在C#中,每個委托聲明都會生成一個多播委托。 事件實際上是內部的兩個方法,稱為帶有委托參數的addremove訪問器。 它們的目的是添加/刪除訂戶(實際上是更改基礎的多播委托實例)。

我們是否有任何實際情況需要執行所有方法,但僅應像多播委托那樣返回最后一個方法值?

不,實際上應該避免這種情況。 這就是框架中沒有非空事件的原因。 在使用公共事件時,我們可以假定它們有多個訂閱者。

對於類似的問題(如何返回每個訂戶的結果),我將不再重復我的較早答案,但也可能值得一試: 如何使用2個方法使用的字符串委托

另一方面,當委托實例僅用作回調(例如方法參數)時,它們通常是非無效的(例如Func<...>委托族)。 盡管從技術上講它們也是多播委托,但是並不期望它們有多個目標。 這些通常通過一些lambda表達式( () => DoSomething() )實例化,在這種情況下,它們始終只有一個目標。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM