Я иду через этот код ниже:Почему дополнительный оператор if проверяет, имеет ли событие значение null до его вызова?
public delegate void PersonArrivedEventHandler(string personName, byte[] personId);
public class SCLib
{
public event personArrivedEventHandler personrrived;
public SCLib()
{
// Simulate that the person arrived after 2000 milli-seconds.
Task.Run(() =>
{
System.Threading.Thread.Sleep(2000);
OnPersonArrived("personName", new byte[] { 0x20, 0x21, 0x22 });
});
}
protected virtual void OnPersonArrived(string smartCardReaderName, byte[] smartCardId)
{
if (this.personArrived != null)
{
PersonArrived(personName, personId);
}
}
}
Но, я не знаю, каково значение этой линии, if (this.personArrived != null)
.
Зачем нужна эта проверка? Есть ли значение if statement
здесь? Я удалил эту строку и запустил программу, и все работает по-прежнему.
Спасибо.
«Я только что удалил все дымовые извещатели из дома, и все в нем продолжало работать, как и раньше, поэтому я считаю, что детекторы дыма не нужны». Нет: все * кроме детекторов дыма * работало по-прежнему. Когда вы удаляете систему безопасности, в которой система безопасности больше не работает. –
@EricLippert: Хорошая аналогия. Имело смысл. –