パラメータが必要ない限り、次を使用することもできます。
myButton.Click += delegate { this.Close(); };
これはさらにきれいに見えます。
しかし、他の人が指摘しているように、匿名のデリゲートを使用すると、コードの再利用性が犠牲になります。記事「方法:イベントの購読と購読解除」にもあります。Microsoftは次のように述べています。
匿名関数を使用してイベントをサブスクライブした場合、イベントのサブスクライブを簡単に解除できないことに注意することが重要です。このシナリオでサブスクライブを解除するには、イベントをサブスクライブするコードに戻り、anonymousメソッドをデリゲート変数に格納してから、デリゲートをイベントに追加する必要があります。一般に
、コードの後半でイベントのサブスクライブを解除する必要がある場合は、匿名関数を使用してイベントをサブスクライブしないことをお勧めします。
ラムダ式からも分離する匿名メソッドの長所の1つは、次のとおりです。
...匿名メソッドがラムダ式にはない機能を提供する場合が1つあります。匿名メソッドを使用すると、パラメータリストを省略できます。これは、匿名メソッドをさまざまな署名を持つデリゲートに変換できることを意味します。
これはラムダ式では不可能です。
上記の段落の結論として、パラメーターをまったく渡さないか、イベントハンドラーの正確な署名を渡す必要があると言えます。
myButton.Click += delegate(object sender, EventArgs e) { this.Close(); };