2010-06-09 13 views
6

Widziałem ludzi określa ich wydarzenia tak:Dlaczego to zdarzenie zostało zadeklarowane u anonimowego delegata?

public event EventHandler<EventArgs> MyEvent = delegate{}; 

Może ktoś wyjaśnić, jak to różni się od zdefiniowania go bez niego? Czy należy unikać sprawdzania wartości zerowej podczas podnoszenia zdarzenia?

+0

Jeśli się nie mylę, prawidłowe określenie tego jest „metoda anonimowy” nie „anonimowy delegat”. –

Odpowiedz

10

Załatwione - dodanie pusty delegat pozwala tego uniknąć:

public void DoSomething() { 
    if (MyEvent != null) // Unnecessary! 
     MyEvent(this, "foo"); 
} 
2

Ta deklaracja zapewnia, że ​​MyEvent nigdy nie jest pusta, eliminując żmudne i podatne na błędy zadanie sprawdzania wartości zerowej za każdym razem, kosztem wykonania dodatkowego pustego delegata za każdym razem, gdy zdarzenie jest uruchamiane.

Powiązane problemy