[英]MultiCast delegates in c#
當我們使用多播委托時,僅返回最后一個方法值。 我們是否有任何實際情況需要執行所有方法,但僅應像多播委托那樣返回最后一個方法值。
並且事件與多播委托之間是否有任何關系?如果是,它們如何鏈接?
謝謝。
事件和多播委托之間是否有任何關系?
在C#中,每個委托聲明都會生成一個多播委托。 事件實際上是內部的兩個方法,稱為帶有委托參數的add
和remove
訪問器。 它們的目的是添加/刪除訂戶(實際上是更改基礎的多播委托實例)。
我們是否有任何實際情況需要執行所有方法,但僅應像多播委托那樣返回最后一個方法值?
不,實際上應該避免這種情況。 這就是框架中沒有非空事件的原因。 在使用公共事件時,我們可以假定它們有多個訂閱者。
對於類似的問題(如何返回每個訂戶的結果),我將不再重復我的較早答案,但也可能值得一試: 如何使用2個方法使用的字符串委托
另一方面,當委托實例僅用作回調(例如方法參數)時,它們通常是非無效的(例如Func<...>
委托族)。 盡管從技術上講它們也是多播委托,但是並不期望它們有多個目標。 這些通常通過一些lambda表達式( () => DoSomething()
)實例化,在這種情況下,它們始終只有一個目標。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.