1

.NET のデリゲート クラスを支配してMulticastDelegateいるのでお聞きしたいのですが、Delegateクラスを使用するユースケースはありますか?

つまり、 type の変数と typeDelegateの別の変数がある場合MulticastDelegate、異なるメソッドオーバーライド (例: GetInvocationList) が呼び出されますが、すべての単一プログラマー定義のデリゲートがクラスMulticastDelegateを使用するためのポイントとなるものから継承する場合はどうなりますか?Delegate

そして、何もないと仮定した場合、代わりObsoleteAttributeに使用するコメントでマークを付けるべきではありませんか?MulticastDelegate

または、コンパイラは暗黙のうちに " Delegate variable1;" を " " に変更すべきではありませんMulticastDelegate variable1;か?

4

1 に答える 1

4

古いものではありません。そのようにマークする理由はありません。

必要なメンバーだけが によって提供されている場合Delegate、なぜ を使用しMulticastDelegateますか?

私の経験Delegateでは、.NET API では "任意のデリゲート" として頻繁に使用されますMulticastDelegate。例えば:

2 つのクラスの両方が存在するのは間違いなく歴史的な偶然によるものですが、それは just の使用を非推奨にする理由にはなりませんDelegate

さらに、次のように記述します。

つまり、Delegate 型の変数と MulticastDelegate 型の別の変数がある場合、異なるメソッド オーバーロード (GetInvocationList など) が呼び出されます。

いいえ、GetInvocationList過負荷ではありません。でオーバーライドさMulticastDelegateていますが、オーバーロードされていません。ああ、そのメソッドの戻り値の型に注意してください - それDelegate[]は ではなくMulticastDelegate[]です。

于 2013-03-19T14:00:06.367 に答える