6

これの違いは何ですか:

this.btnOk.Click += new System.EventHandler(this.btnOK_Click);

この?

this.btnOk.Click += this.btnOK_Click;

どちらも機能します。前者は、スニペットを使用するときの Visual Studio の既定値です。しかし、それは余分な言葉遣いを宣伝しているように見えますか、それとも何か不足していますか?

4

4 に答える 4

10

変わりはない。デリゲートのインスタンス化を省略することは、単なる構文キャンディです。C# コンパイラは内部でデリゲートのインスタンス化を生成します。

于 2008-09-23T04:41:36.967 に答える
4

C# 3.0 以降では、これに違いはありません。C# 3.0 より前は、コンパイラの制限により EventHandlers が必要でしたが、C# 3.0 の出現により、非常に明確にしたい場合を除き、2 番目の形式が推奨されます。

于 2008-09-23T04:41:58.917 に答える
1

C# 3.0 以降では、デリゲート ハンドラーが暗黙的に追加されていると思います。ただし、特に複数のデリゲート型が考えられる場合は、より明示的にすると役立つ場合があります。

于 2008-09-23T04:39:03.793 に答える
1

「+= Delegate_Name」はシンタックス シュガーです。コンパイラが新しいラッパーを作成します。

于 2008-09-23T04:40:10.153 に答える