web-dev-qa-db-ja.com

C#: '+ = anEvent'と '+ = new EventHandler(anEvent)'の違い

以下のコードを使用してください。

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

次の違いは何ですか?

[object].[event] += anEvent;

//and

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

[UPDATE]

どうやら、2つの間に違いはありません...前者は後者の単なる構文糖衣です。

73
Andreas Grech

違いはありません。最初の例では、コンパイラーは、インスタンス化するデリゲートを自動的に推測します。 2番目の例では、デリゲートを明示的に定義します。

デリゲート推論はC#2.0で追加されました。したがって、C#1.0プロジェクトの場合、2番目の例が唯一の選択肢でした。 2.0プロジェクトの場合、推論を使用する最初の例は、コードベースで使用して表示したいものです。これは、より簡潔であるためです。

77
driis
[object].[event] += anEvent;

-の単なる構文糖衣です

[object].[event] += new EventHandler(anEvent);
16
Martin Jonáš

違いはないと思います。コンパイラーは最初のものを2番目のものに変換します。

10
Megacan