2017-05-01 17 views
-1

accepted answer hereによると違いはありませんが、MSDNに:通常のEventHandler EventHandlerの対<TEventArgs>

、あなたが使用することができます ので、イベントにデリゲートを宣言する必要はありませんどちらかEventHandlerEventHandler<TEventArgs> デリゲート。デリケートは、 のような珍しいシナリオでのみ宣言してください。ジェネリックを使用できないレガシーコードでクラスを利用できるようにする必要があります。

Microsoftは、簡略化された型付けの方が一般的なアプローチを強く推奨していますが、違いは何か、何が分かりませんか?

+2

、それは 'EventHandlerの'についてでした。ポイントは、ジェネリックを使用して独自の 'EventHandler 'を宣言できることです。ここで、Somethingは、イベント加入者に渡すプロパティを持つEventArgsから派生した独自のクラスです。非ジェネリックなEventHandlerと同じではない*、プロパティを渡すことはできません。 –

答えて

1

あなた自身のカスタムデリゲートを作成するのではなく、EventHandlerまたはEventHandler < "T">(入力の少ないもの)のいずれかを使用して、同じことを述べるためにリンクした受け入れられた回答とMSDNドキュメントの両方があると思います。

受け入れられた答えから:「...より明確で、タイピングが少ないので、おそらく後者よりも前者を優先する必要があります。
前者は:

public event EventHandler<MyEventArgs> SomeEvent; 

そして、MSDNから:EventHandlerのとEventHandlerの< "TEventArgs" シナリオで >デリゲートが動作しない、あなたは、デリゲートを定義することができます。デリゲートを定義
は受け入れ答えから「後者」です:あなたは質問を誤解

public delegate void MyEventHandler(object sender, MyEventArgs e);