問題タブ [multicastdelegate]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 単純なデリゲート (デリゲート) とマルチキャスト デリゲート
多くの記事を読みましたが、通常作成する通常のデリゲートとマルチキャスト デリゲートの違いについてはまだ明確ではありません。
上記のデリゲート MyMethodHandler は、これら 2 つのメソッドを呼び出します。マルチキャスト デリゲートはどこから来るのでしょうか。複数のメソッドを呼び出すことができると読みましたが、デリゲートに関する私の基本的な理解が正しくないのではないかと心配しています。
c# - C#のMulticastDelegateではないDelegateはありますか?
答えはノーだと思いますか?ない場合、なぜ私たちはクラスDelegate
を分けたのですか?MulticastDelegate
多分それは「他のいくつかの.NET言語」のせいですか?
c# - DynamicInvokeを回避しながら、パラメーターとしてMulticastDelegateを使用する
MulticastDelegate
同じ署名を持つ多数の(レガシー)デリゲートの1つを参照できるがあります。例えば:
これらのデリゲートは、イベントを定義するために使用されます。
次に、MulticastDelegate
いくつかの一般的なチェックを行うために使用するを取り込むメソッドがあります。
これは、イベントが定義されたクラスの他のメソッド内から呼び出されます。
DynamicInvokeを回避する、これを行うためのより簡潔な方法はありますか?
c# - デリゲート型が MulticastDelegate クラスから派生するのはなぜですか? Delegate クラスから直接派生しないのはなぜですか?
デリゲート型に関する非常に基本的な質問があります。Delegate
オブジェクト ブラウザでとクラスのメンバを比較しましたが、MulticastDelegate
に存在する新しい追加メンバは見つかりませんでしたMulticastDelegate
。
Delegate
クラスにGetInvocationList
仮想メソッドがあることにも気付きました。したがって、Delegate
クラスには複数のメソッドへの参照を保持する機能が必要だと思います。私の仮定が正しければ、Delegate
クラスではなくクラスからカスタム デリゲート型を直接派生させないのはなぜだろうかMulticastDelegate
。
ここで何が欠けているのかわかりません。違いを理解するのを手伝ってください。
c# - C#のマルチキャストデリゲートで例外を処理するにはどうすればよいですか?
マルチキャストデリゲートを介して呼び出しているコードがいくつか与えられました。
そこで発生した例外をキャッチして管理する方法を知りたいのですが、それは今のところ管理されていません。与えられたコードを変更することはできません。
私は周りを見回して、GetInvocationList()を呼び出す必要があることを発見しましたが、これが役立つかどうかはよくわかりません。
c# - new KeyEventHandler(Form1_KeyDown) と Form1_KeyDown の違い
Windows フォーム アプリケーションでは、次のようにイベント ハンドラーを登録できます。
後で同じハンドラーを次のように登録解除します。
-= には、同じ署名の 2 番目の新しいハンドラーではなく、最初に登録されたのと同じハンドラーが必要であると予想されるため、これは奇妙に思えます。しかし、経験から、私はこれが機能することを知っています。これは、これは特殊なケースであり、実際にはそうであると私に考えさせました
その理論に基づいて、次のようなイベントを登録および登録解除するためにコードを頻繁に書き直しました。
これは安全ですか?それとも、私が気付いていない意図しない副作用がありますか?
c# - MulticastDelegateでBeginInvokeを呼び出しますか?
Jon Skeetによると、「BeginInvokeを呼び出すことができるのは、単一のターゲット呼び出しを持つデリゲートでのみです。」
何故ですか?本当の理由は何ですか?
注:明確にするために(そして私がこの間違いを犯したため)、私はBeginInvoke
コントロールではなく、デリゲートについて話している。
c# - C#マルチキャストデリゲートでのマルチキャストの使用
シングルキャストデリゲートよりもマルチキャストデリゲートがあると便利なのはいつですか。
私は主にC#ラムダと組み合わせてデリゲートを頻繁に使用しますが、C#デリゲートのマルチキャストの側面を使用したいという衝動を感じたことはありません。つまり、複数のデリゲートを1つのデリゲートにまとめたいとは思っていません。したがって、マルチキャストデリゲートがどのような状況で役立つのか非常に興味があります。たとえば、デリゲートをチェーンしたり、リストに入れたりするなど、他の方法で機能を簡単に実装できる例しか考えられません。
特に、ここでのEric Lippertの回答は、C#チームでさえデリゲートの多元性を忘れることがあるという印象を与えます。
c# - DelegateとMulticastDelegateの違いは?
重複の可能性:
単純なデリゲート(デリゲート)とマルチキャストデリゲート
Delegate
クラスとクラスの違いは何だろうと思っていましたMulticastDelegate
か?C#のデリゲートは常にマルチキャストですよね?デリゲートには、メソッドへの複数のポインターを含めることができるためです。
delegate
また、キーワードがDelegate
クラスとどのように関連しているかについても疑問に思いました。
誰かがこれをより詳細に説明できますか?
delphi - Delphiでの信号とスロットの実装?
Delphiには、イベントディスパッチ用のシグナルおよびスロットメカニズムの実装がありますか?