問題タブ [anonymous-methods]

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 投票する
4 に答える
4520 参照

c# - メソッドと匿名型

メソッドから匿名型を返すことができないことは知っていますが、Select 拡張メソッドがどのように匿名型を返すのか疑問に思っています。それは単なるコンパイラのトリックですか?

編集

L がリストであるとします。これはどのように作動しますか?

戻り値の型は IEnumerable<'a> で、'a = new {String Name}

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

c# - C#:匿名メソッドでローカル変数を宣言することは可能ですか?

匿名の C# メソッドでローカル変数を使用することは可能です。つまり、次のコードでは、カウントを 1 回だけ実行したいと考えています。

匿名関数の「let」はありますか?

更新: このステートメントの後にいくつかの Where 句を追加しているため、select で閉じることができないことに注意してください。

/ニールス

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

c# - 匿名メソッド ブロックで out パラメータの使用を回避するにはどうすればよいですか?

次のメソッドはコンパイルされません。Visual Studio は、「out パラメーターは匿名メソッド内で使用できない可能性があります」と警告します。このWithReaderLock(Proc action)メソッドはdelegate void Proc().

この動作を取得する最良の方法は何ですか? (スレッドセーフな辞書に関するアドバイスは控えてください。この質問は、一般的な out パラメータの問題を解決することを目的としています)。

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

c# - EventHandler と匿名デリゲート / ラムダ式

匿名のデリゲートとラムダ式を使用して C# でイベント ハンドラーのメソッドを作成することで、少なくとも私自身は解決したいと思っています。

匿名デリゲートまたはラムダ式のいずれかを追加するイベントがあるとします (新しいバージョンの .NET を使用できる幸運な人々のために)。

クラスがガベージ コレクションされるのを防ぐハンドラーがまだあるイベントについて、過去の人々が忘れていることを読んだことがあります。クラス内で SomeEvent を null に設定するだけでなく、追加されたハンドラーを削除するにはどうすればよいでしょうか。以下はまったく新しいハンドラではないでしょうか?

匿名デリゲートまたはラムダ式を変数に格納することがわかりました。しかし、少なくとも私には、イベント ハンドラーを簡単かつ簡潔に追加できるようにするという目的全体が無効になっているように思えます。

繰り返しますが、私はあなたができることを理解しています...

しかし、イベントから動的に作成されたメソッドを削除するだけで、より興味深いものになります。うまくいけば、誰かが私のためにこれに光を当てることができます. ありがとう!

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

c# - デリゲートとラムダとLINQ、オーマイ!

かなり後輩の開発者として、私は経験不足と知識の穴を浮き彫りにする問題に直面しています。ここの前文が長すぎる場合は失礼します。

私は、LINQ(このプロジェクトの目的のためにOBJECTSおよびXML)を含む多くの新しい(私にとって)テクノロジーを学ぶ必要があるプロジェクトに自分自身を見つけました。これまで読んだことはすべて、LINQを利用するには、以下(デリゲート、匿名メソッド、ラムダ式)を完全に理解する必要があることを示唆しています。

さて、楽しみが来ました。.NETイベントモデルを使用して作業したため、過去に代理人を消費しましたが、詳細の大部分は私には隠されています(Microsoftに感謝します)。基本的なレベルでは、デリゲートインスタンスはメソッドへのポインタであることを理解しています(非常に単純化されていると思います)。

匿名メソッドは、基本的に、デリゲートのターゲットとして一般的に(排他的ではないにしても)作成されるインラインの名前のないメソッドであることを理解しています。

また、ラムダは構文を単純化するためにさまざまな方法で使用され、単純な匿名メソッドをデリゲートにポイントするために使用できることも理解しています。

私の説明のいずれかがここから大きく外れている場合はご容赦ください。これは、これらのトピックを理解するための基本的なレベルです。

したがって、課題は次のとおりです。

  1. これらの項目についての私の理解がさらに近い場合、少なくとも基本的なレベルで誰かに教えてもらえますか?私は複雑な難解な細目を探しているのではなく、基本的なものだけを探しています(今のところ)。

  2. プロジェクトにLINQを適用して合理的な効果を得る前に、これらの概念をどの程度真に理解する必要がありますか?私はそれを完全に理解し、時間を費やすことをいとわない。作品を制作する前に、これらすべてを完全に理解する時間がないかもしれません。

  3. 誰かが私にこれらの主題を説明し、それらを「現実世界」の例に適用するいくつかの良い記事を指摘して、トピックの基本とそれらの応用について頭を悩ませることができますか?私が現実の世界で意味するのは、抽象的な「ベクトルと形」や「動物と牛」ではなく、「顧客と請求書」の文脈でこれをどのように使用できるかということです。シナリオはデモンストレーションの目的でいくらか考案することができますが、厳密には学術的ではないことを願っています。オンラインや本でたくさんの例を見つけましたが、「平易な英語」の説明はほとんどないようです。

何卒よろしくお願い申し上げます。

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

c# - これはまだ閉鎖ですか?

testit() メソッドはクロージャです。aString は範囲外ですが、testit() は引き続き実行できます。testit2() は、スコープ (mystring) から外れていないが、testit2() にも渡されていない変数を使用しています。testit2() は閉鎖と見なされますか?

2 番目の例では、mystring はメソッドの外部で更新でき、それらの変更は testit2() に反映されます。これは、mystring をパラメーターとしてキャプチャすることしかできない通常の方法とは異なります。

0 投票する
4 に答える
4657 参照

c# - デバッガーで匿名メソッドを含むメソッドを編集できないのはなぜですか?

そのため、正しく理解できなかったメソッド内にラムダ式または無名メソッドを作成するたびに、それを修正するために、アプリケーション全体または単体テストフレームワーク全体を再コンパイルして再起動する必要がありますこれは非常に煩わしいことであり、そもそもこれらの構成を使用して節約したよりも多くの時間を無駄にすることになります。Linqとラムダは私のお気に入りのC#機能のひとつですが、できればそれらから離れようとするのはとても悪いことです。

それがこのようになっているのには技術的な理由があると思いますが、おそらく誰かが知っていますか?さらに、VS2010で修正されるかどうか誰かが知っていますか?

ありがとう。

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

c# - 匿名ハンドラーの登録を解除するにはどうすればよいですか?

C# 2.0 には、無名関数と呼ばれる便利な機能があります。これは、主にイベントで使用することを目的としています。

ここで、Button が静的メンバーであると仮定すると、それにデリゲートを追加すると、管理されていないリソースとしてカウントされます。通常、ハンドラーを再登録する前に、ハンドラーの登録を解除する必要があります。これは、GUI プログラミングの非常に一般的な使用例です。

匿名関数のガイドラインは何ですか? フレームワークは自動的に登録解除しますか? もしそうなら、いつ?