問題タブ [anonymous-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.

0 投票する
5 に答える
5795 参照

c# - C# の匿名デリゲートとジェネリック リスト

以下のコードを説明してもらえますか:

  1. そのようにして一般的なリストでオブジェクトを見つけるポイントは何ですか? 彼は単にリストを繰り返すことができます。

  2. この委譲されたメソッドが list の各要素に対してどのように呼び出されたのでしょうか?

注:これに共通の名前がある場合、私の質問のタイトルを更新できますか?

ありがとう !

0 投票する
1 に答える
750 参照

.net - 匿名デリゲートによるイベント処理

記録のために:ここで同様の質問を見つけましたが、この件についてもう少し詳しく説明する必要があります。

私の具体的なシナリオは次のとおりです。

Silverlight 4 では、このmyFrameworkElement.FindName("otherElementName")方法は問題なく機能しているように見えますが、問題が発生しました。null要素がまだビジュアルツリーに追加されていない場合でも、明らかに戻ります。

しかし今、カスタムハンドラDependencyPropertyのでこの機能が必要です。このスコープでは、UserControl がビジュアル ツリーにまだ追加されているかどうかは不明です。しかし、ツリー内の別の要素に対して特定のアクションを実行する必要があります。要素がすでに利用可能な場合は、すぐに実行できますし、実行する必要があります。そうでない場合は、利用可能になったらすぐに実行する必要があります。そこで、次のように呼び出すことができるこの拡張メソッドを思いつきました。PropertyChangedCallbackUserControl

拡張メソッドのコードは次のようになります。

ご覧のとおり、ハンドラーのnameおよびresultAction内部の値が必要なため、匿名デリゲートを使用する必要があります。次に、ハンドラー内のイベントのサブスクライブを解除します。これは、私が頭が良くてクリーンな男であり、漏れがないようにしたいからです。また、派手な WeakEventFactories や類似のものを使用して、車輪に乗ったハエを壊したくありません。

これで、これまでのところスムーズに動作します。しかし、いくつか質問があります。

  1. これは一般的に、ハンドラー内のイベントハンドラーのサブスクライブを解除するのに十分なクリーンなアプローチですか? それとも、罪のない子犬を最終的に殺すつもりですか?
  2. 匿名デリゲート内で外側のスコープ変数を使用するために、リークなどの問題が発生する可能性はありますか?
  3. Loadedイベントを「見逃す」原因となるスレッド同期の問題はありますか? この特別なシナリオでは、Silverlight の UI ディスパッチャー スレッドのみが関与する必要があります。しかし、とにかくそれが問題である場合、および/またはUIに関連しないシナリオで同様の機能が必要な場合、それをf1x0rするための最良のアプローチは何ですか?

私の長い説明を読んでくれてありがとう。;-)

0 投票する
6 に答える
699 参照

c# - C#のラムダ式?

私はこれらにかなり慣れていないので、誰かが(次のコードの)重要性を説明したり、ラムダ式に関する有用な情報へのリンクを提供したりできますか? テストで次のコードに遭遇しましたが、なぜ誰かがこれを行うのか疑問に思っています:

私の本能は、それは単純なことで間違いではないと教えてくれます。

0 投票する
2 に答える
2043 参照

c# - 機能機能へ

私が持っている場合:

そしてジェネリックバージョン

強く型付けされた Func of SomeType を Func of T にキャストする方法はありますか? これまでに見つけた唯一の方法は、それをモック関数と組み合わせることです。

Expression.Lambda でそれを行う方法は知っていますが、式ツリーではなく、単純な関数を使用する必要があります

EDIT - .net 3.5 Using Matthewsの例を使用し、使用法の明示的な詳細を示します。

私がまだ求めているのは、値を返すときに Func Of ConcreteType から Func Of T に取得する方法です。

私はコンパイラ エラーを回避したいだけです。T が別の型になり、実行時エラーが発生する可能性があることを嬉しく思います。

次に、リポジトリでの消費:

0 投票する
2 に答える
727 参照

c# - C# 2.0 で匿名ジェネリック デリゲートを使用する方法

NTree というクラスがあります。

匿名デリゲートで Traverse を使用しようとすると、次のようになります。

引数 '2': 'anonymous method' から 'NisConverter.TreeVisitor' に変換できません

コード:

ただし、これによりエラーは発生しません。

...

「arrowhead-parenthisis」とすべてを匿名デリゲートに入れようとしましたが、うまくいきません。私を助けてください!

ありがとう & BR -マティ

0 投票する
2 に答える
167 参照

c# - 匿名の代理人を理解するのを手伝ってください。

Microsoft から VCSharpSample パックをダウンロードし、Anonymous Delegates を読み始めました。コードが何をしているのかは大体理解できますが、その背後にある理由はわかりません。コードがよりクリーンになり、保守が容易になる例をいくつか挙げていただければ、頭を悩ませることができるかもしれません。:)

手伝ってくれますか?

0 投票する
2 に答える
21616 参照

c# - 匿名デリゲートを使用した Dispatcher.Invoke は Silverlight では機能しますが、WPF では機能しません

Silverlight 4 には、非同期の Completed イベントを持つカスタム サービス クラスがあります。Completed イベント内で、返されたデータを取得し、次のような方法で populate メソッドを呼び出します。

SL4 で動作しますBeginInvokeが、WPF に移植すると、次のエラーが発生します。

デリゲート型ではないため、ラムダ式を「System.Delegate」型に変換できません

私はそれをインラインの匿名のパラメータ化されたデリゲートに変更しようとしました:

ただし、同じコンパイル時エラーが発生します。

これをWPFで動作させる方法はありますか? を使用するためのリファクタリングBackgroundWorkerは、私にとって選択肢ではありません。

0 投票する
3 に答える
3845 参照

c# - ルックアップを高速化するためにDictionaryを使用して匿名関数/デリゲートでファクトリメソッドをマッピングしますか?

現在、次のような静的ファクトリメソッドがあります。

私がそれらをキャッシュしない理由は、BookResourceが文化に敏感であり、文化は呼び出しごとに変わる可能性があるためです。文化への変更は、返される本のオブジェクトに反映する必要があります。

これらのifステートメントを実行すると、速度のボトルネックになる可能性があります。しかし、本のコードを無名関数/デリゲートにマップするとどうなるでしょうか?次のようなもの:

Create() => {これらの行を実際に機能させるにはどうすればよいですか?

ブックコードが50未満(つまり、ifステートメントが50未満)の場合、これは速度的に価値がありますか?

これも同様の質問ですが、残念ながら、作成者は自分のコードEnum、Delegate Dictionaryコレクションを投稿していません。ここで、delegateはオーバーロードされたメソッドを指しています。

アップデート

いくつかのパフォーマンスベンチマークifs対デリゲートを行いました。ユニットコードをランダムに選び、両方の方法で同じシードを使用しました。デリゲートバージョンは実際には少し遅いです。それらの代表者は、ある種のオーバーヘッドを引き起こしています。実行にはリリースビルドを使用しました。

0 投票する
2 に答える
245 参照

c# - C# anonymus は効率性と安全性を委任します

私はデリゲートの進行状況フォームを持っています:

どちらの方法を適用するのが良いか (より効率的か安全か) - 匿名デリゲートは次のように呼び出します。

または、次のような別の方法を使用します。

0 投票する
3 に答える
7815 参照

c# - 匿名デリゲートをスレッドに渡す...なぜこれが機能するのですか?

私のプログラムでは、4 つのスレッドで調べる必要がある大量のデータを分割します。

私たちのコーディング標準では、いわば StyleCop に準拠する必要があり、StyleCop は次のことを要求しています。

SA1410: デリゲートのパラメーター リストが空であるため、匿名メソッドからかっこを削除します。

これを行うと、次のコンパイラ エラーが発生します。

次のメソッドまたはプロパティ間の呼び出しがあいまいです: 'System.Threading.Thread.Thread(System.Threading.ParameterizedThreadStart)' と 'System.Threading.Thread.Thread(System.Threading.ThreadStart)'

ThreadStart オブジェクトと ParameterizedThreadStart オブジェクトを調べましたが、これらのオブジェクトのいずれかで必要なことを行う方法がわかりません。

私の質問: 匿名のデリゲートはどのように機能しますか? それらは何にコンパイルされますか?最終的には、匿名のデリゲートなしでこれを機能させる必要がありますが、どこから始めればよいかわかりません。

助けてくれてありがとう、

シーカー