はすぐに私の心に来て少なくとも二つの理由があります:メソッドの宣言と
一貫
あなたはパラメータ名が署名の一部ではないことを右であり、そのように、それは技術的にありますデリゲートに一致する必要はありません(したがって、デリゲートをメソッドに一致させるときはパラメータ名は無視されます)。しかし、一貫性は言語の重要な特徴です。それは学習をより容易にし、認知的作業負荷を減らし、生産性を向上させます。デリゲートは、メソッドの「プレースホルダ」です。一貫性を持たせるためには、定義を可能な限りメソッド定義に似たものにすることが理にかなっています。この方法は、このように宣言することになります。この方法に
void PropertyChangedHandler(object sender, PropertyChangedEventArgs e) {
//...
}
デリゲートのように定義することができます:あなたが見ることができるように
delegate void PropertyChangedEventHandler(object sender, PropertyChangedEventArgs e);
、唯一の違いはdelegate
キーワード(そしてもちろんの欠如でありますこれは署名の一部ではないため、ここでは無関係です)。それは学びやすく覚えやすいです。
開発効率向上は、あなたが+=
そして、イベント名を入力することができますVisual Studioで
を支援する2回押しタブとイベントハンドラメソッドが自動的に生成されます。デリゲートのパラメータの名前は、生成されたメソッドに使用されます。デリゲートには名前ではなくパラメータ型しかない場合は、パラメータはparam1
,param2
などの名前にする必要がありますが、これはあまり意味がありません。同じことが他の開発支援にも当てはまります。たとえば、デリゲートを呼び出すコードを記述する場合、IntelliSenseはデリゲートのパラメータの名前を表示します。それは彼らのタイプよりはるかに便利です。
オブジェクトとEventArgsの代わりに2つのオブジェクトを取った代理人がいたとします。あなたや他の誰かがデリゲートをどのようにして伝えますか? – BoltClock
インタフェースで宣言されたメソッドからパラメータ名を削除したいのですが、抽象メソッドも削除しますか?基本的に、パラメータリストはどこでも一貫した構文を持っています。 –