C #: разница между '+ = anEvent' и '+ = new EventHandler (anEvent)' - PullRequest
73 голосов
/ 15 февраля 2009

Возьмите следующий код:

private void anEvent(object sender, EventArgs e) {
    //some code
}

В чем разница между следующим?

[object].[event] += anEvent;

//and

[object].[event] += new EventHandler(anEvent);

[UPDATE]

По-видимому, нет никакой разницы между этими двумя ... первый - просто синтаксический сахар второго.

Ответы [ 3 ]

77 голосов
/ 15 февраля 2009

Разницы нет. В вашем первом примере компилятор автоматически выведет делегат, который вы хотите создать. Во втором примере вы явно определяете делегата.

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

16 голосов
/ 15 февраля 2009
[object].[event] += anEvent;

просто синтаксический сахар для -

[object].[event] += new EventHandler(anEvent);
10 голосов
/ 15 февраля 2009

Я не думаю, что есть разница. Компилятор преобразует первое во второе.

...