14

クラスのイベントに登録していましたが、いつものように怠惰で、Visual Studio 2008 Proに組み込まれているオートコンプリート機能を使用して、デリゲートの作成とそれに関連付けられたメソッドを自動作成しました。

public abstract class FooBase
{
    protected event EventHandler<MyValueChangedArgs> MyValueChanged;

    protected FooBase()
    {
        MyValueChanged +=
            new EventHandler<MyValueChangedArgs>(HandleMyValueChanged);
    }

    private void HandleMyValueChanged(object sender, MyValueChangedArgs e)
    {
        // Some handling logic
    }
}

通常、Visual Studioがイベントハンドラーを生成するときはよく考えませんが、リファクタリングから推奨事項を受け取りました。「冗長なデリゲート作成を削除する」プロ。推奨事項は次のようになります。

public abstract class FooBase
{
    protected event EventHandler<MyValueChangedArgs> MyValueChanged;

    protected FooBase()
    {
        MyValueChanged += HandleMyValueChanged;
    }

    private void HandleMyValueChanged(object sender, MyValueChangedArgs e)
    {
        // Some handling logic
    }
}

デリゲートの作成はどのような状況で冗長であり、デリゲートの作成はいつ適切ですか?

ありがとう。

4

2 に答える 2

6

リファクタリングだと思います!その行を教えてくれます

MyValueChanged += new EventHandler<MyValueChangedArgs>(HandleMyValueChanged);

短縮することができ、コンパイラはイベントハンドラの作成とTEventArgsタイプの引数を推測します...

デリゲートの作成はどのような状況で冗長であり、デリゲートの作成はいつ適切ですか?

デザイナーが生成したコードについて...

于 2009-01-31T05:59:50.497 に答える
6

申し訳ありません。匿名メソッドがC#に追加されたときに、製品スケジュールに短いコードを生成する時間がなかっただけです。

私は常に生成されたコードを編集して、余分な構文を削除します。

于 2009-01-31T06:02:08.213 に答える