Это лучше, потому что есть небольшая вероятность того, что Leave
станет нулевым после проверки на ноль, но перед вызовом (что приведет к тому, что ваш код выдаст NullReferenceException
).Поскольку тип делегата является неизменным, если вы сначала назначите его переменной, эта возможность исчезнет;Ваша локальная копия не будет затронута любыми изменениями Leave
после назначения.
Обратите внимание, что этот подход также создает проблему в обратном порядке;это означает, что существует (крошечная, но существующая) вероятность того, что обработчик события будет вызван после того, как он был отсоединен от события .Этот сценарий, конечно, должен быть обработан также изящно.