2012-05-18 40 views
2

從這個question的答案的內容我學到了一個新的竅門;爲事件添加一個簡單的處理程序,以避免在引發時進行空值檢查。爲事件添加簡單處理程序是否會導致重大開銷?

public static event EventHandler SomeEvent = delegate {}; 

,並調用它沒有空檢查:

SomeEvent(null,EventArgs.Empty); 

這是否添加顯著的開銷?如果沒有,爲什麼不是這樣的內置?

回答

2

這是否會增加顯着的開銷?如果沒有,爲什麼不是這樣的內置?

它不會添加顯着開銷 - 只是在事件發生時的委託調用。

至於爲什麼它沒有內置的 - 有幾個缺點的:

  1. 這不一定是防彈 - 你仍然可以clear the handler list afterwards,在這種情況下,你仍舊需要適當檢查。
  2. 這確實會增加開銷 - 雖然很小,但在特定情況下,開銷可能會有問題。
+0

有人會認爲,如果他們要在這個功能中構建清理處理程序列表將會留下微不足道的東西。你能否提供一個場景的例子,其中增加的開銷會有問題? – NominSim

+0

@NominSim插座和計時器讓人想起 - 在這些情況下,你不會想要額外的開銷...... –

+0

那麼你會有任何開銷,無論是檢查null或調用一個微不足道的代表,這是更多? – NominSim

相關問題