Являются ли явные инкапсулирующие делегаты предпочтительными для событий в C #? - PullRequest
1 голос
/ 30 сентября 2010

Стиль вопроса.

Для подписки на событие в C # 1.0 используется явный инкапсулирующий делегат:

publisher.RaiseCustomEvent += new CustomEventHandler(HandleCustomEvent);

В C # 2.0 добавлен более простой синтаксис:

publisher.RaiseCustomEvent += HandleCustomEvent;

В Visual Studio 2010 (протестировано с проектом .NET 3.5) при наборе

"myObject.SomeEvent +="

появляется возможность нажать вкладку, чтобы заполнить явный делегат.Кроме того, код, созданный с помощью дизайнера WinForms, всегда использует явные делегаты.

Я понимаю, что значение является явным, но не в ущерб читабельности.Учитывая, что новый синтаксис намного проще / чище / удобочитаемее и существует с 2006 года, почему Visual Studio так сильно подталкивает вас к использованию старого синтаксиса?Это все еще предпочтительный синтаксис?

Ответы [ 2 ]

1 голос
/ 30 сентября 2010

Для кода дизайнера он должен придерживаться явного создания делегата. Оба метода (делегаты с неявным типом и делегаты с явным типом) приводят к одному и тому же IL; неявная типизация - это всего лишь языковая функция в C #, поэтому у разработчика нет особой причины пытаться использовать их в своих интересах.

Что касается функции typeahead при присоединении к событию, у меня нет объяснения этому. Единственное время (мне известно), которое требует явного создания делегата, это когда цель имеет тип Delegate (что означает, что она не имеет формальной подписи). Поскольку вы можете объявить только событие определенного типа делегата, я не вижу ничего другого, кроме выбора приоритезировать другие функции IDE над этим, в качестве причины для этого.

0 голосов
/ 30 сентября 2010

Нет веской причины.Я всегда удаляю их.Устраивайся, хотя я согласен с любой тенденцией к их удалению!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...