問題タブ [delegates]
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# - でタスクを委任し、タスクが完了したときに通知を受け取る(C#の場合)
概念的には、次のことを実行したいのですが、C#で正しくコーディングする方法を理解するのに苦労しました。
次に、WorkerMethod()が完了したら、次のコマンドを実行します。
p>誰かがその例を挙げてもらえますか?
c# - デリゲートは単なる省略形のインターフェイスではありませんか?
次があるとします。
これで、Bar と Baz を Foos として処理し、それらの Func メソッドを呼び出すことができます。
デリゲートはこれを少し単純化します。
これで、Foo デリゲートとして Bar と Baz をいじることができます。
コードが短くなる以外に、デリゲートの本当の利点は何ですか?
.net - IEqualityComparerでデリゲートをラップします
いくつかのLinq.Enumerable関数は。を取りますIEqualityComparer<T>
。delegate(T,T)=>bool
を実装するように適応させる便利なラッパークラスはありIEqualityComparer<T>
ますか?(正しいハッシュコードの定義に関する問題を無視する場合)それを書くのは簡単ですが、すぐに使える解決策があるかどうか知りたいです。
Dictionary
具体的には、キーのみを使用してメンバーシップを定義し(さまざまなルールに従って値を保持しながら)、sに対してセット操作を実行したいと思います。
c# - キーワード new を使用してデリゲートをイベントに追加しても安全ですか?
私が懸念していることの 1 つは、デリゲートをイベントに登録する 2 つの方法を発見したことです。
- OnStuff += this.Handle;
- OnStuff += 新しい StuffEventHandler(this.Handle);
最初のものはきれいで、「OnStuff -= this.Handle;」を実行するのは理にかなっています。イベントから登録を解除するには...しかし、後者の場合、「OnStuff -= new StuffEventHandler(this.Handle);」を行う必要がありますか? 別の StuffEventHandler 参照を投入しているので、何も削除していないように感じます。イベントは参照によってデリゲートを比較しますか? ここで厄介なメモリプールを開始できるのではないかと心配しています。私を取得しますか?以前に登録した「新しい StuffEventHandler」への参照がありません。
#1を行うことの欠点は何ですか?
#2を行う利点は何ですか?
c# - 匿名メソッドのラムダ式よりもデリゲート構文が優先される場合はありますか?
ラムダ式 (インライン コード) などの新機能の出現により、デリゲートや匿名メソッドを使用する必要がなくなったということですか? 私が見たほとんどすべてのサンプルでは、新しい構文を使用して書き直すためのものです。
まだデリゲートとラムダ式を使用する必要がある場所は機能しませんか?
vb.net - VB.NET のパラメーターとしてのデリゲート
バックストーリー: 現在取り組んでいるプロジェクトのすべてのロギングを処理するためにlog4netを使用しています。ある特定のメソッドは、いくつかの異なる状況下で呼び出すことができます。ログ メッセージがエラーであることを保証するものもあれば、ログ メッセージが警告であることを保証するものもあります。
例として
次の行に沿って、さらに何かに:
それを呼び出して、log.ErrorFormat または log.WarnFormat のいずれかをデリゲートとして渡すことができるようにするには?
VS 2008 および .NET 3.5 SP1 で VB.NET を使用しています。また、私は一般的にデリゲートにはかなり慣れていないので、あいまいさを取り除くためにこの質問を別の言葉で表現する必要がある場合は、お知らせください。
編集: また、クラス コンストラクターでデリゲートを ErrorFormat または WarnFormat に初期化するにはどうすればよいですか? それは簡単myDelegate = log.ErrorFormat
ですか?それ以上のことがあると思います (この件に関する私の無知を許してください - デリゲートは本当に私がもっと学びたいものですが、これまでのところ私の理解を逃れています)。
c# - リストを使用できますかメソッドポインタのコレクションとして?(C#)
実行するメソッドのリストを作成したい。各メソッドには同じ署名があります。ジェネリック コレクションにデリゲートを配置することを考えましたが、このエラーが発生し続けます。
「メソッド」は「変数」ですが、「メソッド」のように使用されます
理論的には、私がやりたいことは次のとおりです。
これを達成する方法についてのアイデアはありますか? ありがとう!
c# - デリゲートを持つローカル変数
これは明らかにベストプラクティスではないようです。なぜそれがベストプラクティスではないのか、またはこれがどのように機能するのかを誰かが説明できますか? 説明を提供する本や記事をいただければ幸いです。
出力される値は、2 番目の値"Modified"です。コンパイラの魔法のどの部分がこれを機能させていますか? これは、ヒープ上の値を追跡し、後で再度取得するのと同じくらい簡単ですか?
[編集]: いくつかのコメントを考慮して、元の文をいくつか変更します...
c# - C#でイベントサブスクリプションをクリアするにはどうすればよいですか?
次の C# クラスを使用します。
c1
さんのイベントにたくさんのサブスクリプションがあり、someEvent
それらをすべてクリアしたい場合、これを達成するための最良の方法は何ですか? また、このイベントへのサブスクリプションがラムダ/匿名デリゲートである可能性があることも考慮してください。
現在、私の解決策は、nullに設定するResetSubscriptions()
メソッドを追加することです。これが目に見えない結果をもたらすかどうかはわかりません。c1
someEvent
delegates - C++/CLI で boost::bind を使用してマネージド クラスのメンバーをバインドする方法
私はネイティブ C++ クラスで boost::signal を使用しています。現在、ネイティブ C++ コールバックを .NET イベントとして公開できるように、C++/CLI で .NET ラッパーを作成しています。マネージ クラスのメンバー関数のアドレスを取得するために boost::bind を使用しようとすると、コンパイラ エラー 3374 が発生し、デリゲート インスタンスを作成しない限り、メンバー関数のアドレスを取得できないというメッセージが表示されます。boost::bind を使用してマネージド クラスのメンバー関数をバインドする方法を知っている人はいますか?
明確にするために、次のサンプル コードではコンパイラ エラー 3374 が発生します。