event使用 C#與 a之間是否有任何區別,例如功能或性能、記憶體方面的差異List<Func<MyArgs>>,我對事件的理解方式我會呼叫
obj.MyClickEvent = handler;
而與串列
obj.MyOnClickFuncs.Add(clickFunc);
現在這個List<Func<Args>>方法看起來簡單多了
uj5u.com熱心網友回復:
事件為希望訂閱事件的代碼提供了更嚴格的 API:
- 他們可以訂閱
- 他們可以退訂
(理論上,底層事件概念也提供了“引發”機制,但這不是由 C# 事件實作的,我懷疑它實際上已經過時了——我懷疑是因為它違反了這個答案中描述的隔離。)
他們不能做任何其他事情。例如,這適用于您的“僅公開串列”方法,但不適用于事件:
obj.MyOnClickFuncs.Clear();
同樣,對于一個事件,訂閱者不會從其他訂閱者那里呼叫處理程式——而他們可以使用串列方法。
換句話說,事件在訂閱者之間提供了更多的隔離。如果您不關心這種隔離,請繼續并公開一份清單。我個人認為隔離是一件好事。有很多我不喜歡事件的事情,但提供的隔離不是其中之一:)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/442706.html
上一篇:無法轉換源型別T?以T型為目標?
