Natknąłem się na to pytanie w teście Microsoft Practice i byłem zdezorientowany. Oto pytanie:Podnieś wydarzenie w języku C#
Które z kodu po C# próbek jest właściwy sposób podnieść zdarzenie, zakładając, że zdarzenie alarmowe, klasa AlarmEventArgs i AlarmEventHandler delegat zostały oświadczył?
Oto „poprawna” odpowiedź zapewnili:
AlarmEventArgs e = new AlarmEventArgs(1, 2);
AlarmEventHandler handler = Alarm;
if (handler != null)
{
handler(this, e);
}
Jednak istnieje także inna odpowiedź, która wydaje się prawidłowe.
AlarmEventArgs e = new AlarmEventArgs(1, 2);
if (Alarm!= null)
{
Alarm (this, e);
}
Ja osobiście zawsze używam drugiej metody. Działa dobrze. Czy ktoś może mi powiedzieć, dlaczego powinienem użyć pierwszej metody zamiast drugiej?
możliwy duplikat [Sprawdzanie wartości zerowej przed wysłaniem zdarzenia ... wątek bezpieczny?] (Http://stackoverflow.com/questions/282653/checking- for-null-before-event-dispatching-thread-safe) – doppelgreener