добавление обработчика событий - PullRequest
7 голосов
/ 22 апреля 2011

Может кто-нибудь сказать мне, если или в чем разница следующих утверждений:

MyObject.MyEvent += new EventHandler(MyEventHandlerMethod);
vs.
MyObject.MyEvent += MyEventHandlerMethod;

всякий раз, когда я нажимаю +=, первый выбор появляется при нажатии на вкладку, поэтому я всегда оставляю его. но мне интересно, могу ли я просто написать второй. Я предполагаю, что они оба скомпилированы одинаково, но мне любопытно, правда ли это. Я почти уверен, что мог бы просто посмотреть на ИЛ, но я слишком ленив для этого :), я бы просто спросил.

Ответы [ 4 ]

7 голосов
/ 22 апреля 2011

Первый вариант был необходим в первом компиляторе C #.Последующие версии не требуют этого - вторая строго эквивалентна первой, и компилятор будет обеспечивать вызов конструктора.

Поскольку второй вариант короче, удаляет ненужную избыточность и не имеет недостатков, я советую использоватьэто, вместо явной версии.С другой стороны, IDE, к сожалению, предлагает только интеллектуальное завершение кода для первой версии, так что вы можете просто пойти с ним.

2 голосов
/ 22 апреля 2011

Они одинаковые. Первое утверждение выводится вторым и обрабатывается для вас в сантехнике.

1 голос
/ 22 апреля 2011

Они идентичны. Нет никакой разницы. Вторая форма по сути является сокращением для первой, и они будут производить идентичный IL.

0 голосов
/ 22 апреля 2011

Таким образом, вывод заключается в том, что запись SomeEvent += new EventHandler(NamedMethod) компилируется в то же самое, что и SomeEvent += NamedMethod.Но если вы планируете удалить этот обработчик событий позже, вам действительно следует сохранить делегат.

Ref: + = новый EventHandler (метод) vs + = метод

Разница между '+ = new EventHandler' и '- = new EventHandler (anEvent)'

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