Я полагаю, EventArgs.Empty
используется для поддержания соглашения о передаче аргумента с событием, даже если оно не требуется.
Митчел Селлерс опубликовал вторую половину моей причины в середине моего поста: он предотвращает исключение нулевой ссылки, если метод попытается что-то сделать с этим аргументом (кроме проверки, если он нулевой).
EventArgs.Empty
в основном выполняет глобально определенный аргумент события без дополнительной информации.
Чтобы привести аналогичный пример поддержки соглашения, наша команда использует string.Empty
для инициализации строки, потому что в противном случае разные кодеры могут использовать newString = ""; or newString = " "; or newString = null;
, и все они могут давать разные результаты для разных условий проверки.
(слегка педантичная) причина для использования EventArgs.Empty
против new EventArgs()
заключается в том, что первый не инициализирует новый EventArgs
, сохраняя небольшой объем памяти.