64

最近、このコードに大きな違いがあるかどうか疑問に思っていました:

public event EventHandler<MyEventArgs> SomeEvent;

そしてこれ:

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

どちらも同じことをしていて、私は違いを見分けることができませんでした。.NET Framework のほとんどのクラスが、イベントにカスタム イベント ハンドラー デリゲートを使用していることに気付きましたが。これには特定の理由がありますか?

4

2 に答える 2

73

あなたが正しい; 彼らは同じことをします。したがって、前者の方が明確でタイピングが少なくて済むため、おそらく後者よりも前者を好むはずです。

多くの .NET Framework クラスに独自のカスタム イベント ハンドラー デリゲートがある理由は、バージョン 2.0 でジェネリック (短縮構文を使用できる) が導入される前に作成されたためです。たとえば、ほぼすべての WinForms ライブラリはジェネリックより前に作成されており、当時はジェネリックが唯一の方法でした。

于 2011-12-29T12:53:22.673 に答える