Свойства добавления / удаления в основном имеют ту же логику использования свойств set / get с другими членами.
Он позволяет вам создавать дополнительную логику при регистрации события и инкапсулирует само событие.
Хороший пример того, ПОЧЕМУ вы хотите это сделать, - остановить дополнительные вычисления, когда они не нужны (никто не слушает событие).
Например, предположим, что события запускаются таймером, и мы не хотим, чтобы таймер работал, если никто не зарегистрирован на событие:
private System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();
private EventHandler _explicitEvent;
public event EventHandler ExplicitEvent
{
add
{
if (_explicitEvent == null) timer.Start();
_explicitEvent += value;
}
remove
{
_explicitEvent -= value;
if (_explicitEvent == null) timer.Stop();
}
}
Возможно, вы захотите заблокировать добавление / удаление с помощью объекта (запоздалая мысль) ...