Я видел несколько упоминаний об этой идиоме (включая на SO):
// Deliberately empty subscriber
public event EventHandler AskQuestion = delegate {};
Поверхность понятна - она избегает необходимости проверять значение null перед тем, как поднимать событие.
Тем не менее, я очень хочу понять, есть ли какие-то недостатки. Например, это то, что широко используется и достаточно прозрачно, чтобы оно не вызывало головную боль обслуживания? Есть ли заметный выигрыш в звонке на абонентский звонок пустого события?