當我們使用多播委托時,只返回最后一個方法值。我們是否有任何實際場景需要執行所有方法,但只返回最后一個方法值,就像多播委托所做的那樣。事件和多播委托之間是否有任何關系?如果是,它們是如何聯系的?謝謝你。
1 回答

陪伴而非守候
TA貢獻1757條經驗 獲得超8個贊
事件和多播委托之間有什么關系嗎?
在 C# 中,每個委托聲明都會生成一個多播委托。事件實際上是內部的兩個方法,調用add
和remove
帶有委托參數的訪問器。他們的意思是添加/刪除訂閱者(實際上更改了底層的多播委托實例)。
我們是否有任何實際場景需要執行所有方法但只返回最后一個方法值,就像多播委托所做的那樣?
不,這實際上應該避免。這就是為什么框架中沒有非空事件。當使用公共事件時,我們可以假設它們有多個訂閱者。
對于類似的問題(如何返回每個訂閱者的結果),我不會重復我之前的回答,但它也可能值得檢查:如何使用訂閱了 2 種方法的字符串委托
另一方面,當委托實例僅用作回調(例如方法參數)時,它們通常是非空的(例如Func<...>
委托系列)。雖然從技術上講,它們也是多播代表,但預計它們不會有多個目標。這些通常由一些 lambda 表達式 ( () => DoSomething()
) 實例化,在這種情況下,它們總是只有一個目標。
- 1 回答
- 0 關注
- 84 瀏覽
添加回答
舉報
0/150
提交
取消