デリゲートを定義するときに匿名メソッドを使用する必要があります。C#デリゲート定義 - 匿名メソッドと正式に定義されたメソッドとの比較
答えて
複数の場所で同じロジックを使用する必要がある場合は、別の方法を使用することが理にかなっています。
ロジックを一度使用する必要があるのは、とです。これはかなり短いですが、無名関数を使用することは理にかなっています。デリゲートがそれを作成しているメソッドのローカル変数にアクセスする必要がある場合、無名関数は非常に便利なクロージャとして機能します。
さらに、無名関数は、Parallel Extensionsとの並列化のようなものに使用されている場合には、かなり長くても便利です。大部分
また、デベロッパーのコードが複雑なため、独自の単体テストが必要な場合は、メソッドとして公開することは意味があります。 (残念なことに、InternalsVisibleTo
を使用する内部メソッドか、パブリックメソッドである必要がありますが、通常はプライベートであることがよくありますが、それは人生です)。
実行する必要がある関数をそのデリゲートだけで実行する必要がある場合(つまり、他の場所でその関数を必要としない場合)、関数/メソッドが(5ライン以下)は比較的短い。
ただし、何を使用するかは厳密なルールが定義されていません。
IMHO、私は匿名の方法はほとんどの状況で可読性に寄与しないことがわかっているので、ほとんど使用しません。
ああ、それは意味があります。読みやすさに関する意見をいただき、ありがとうございます。私は匿名の構文を少し複雑にしていたので、それが私のものかどうか疑問に思いました。 –
- 1. メソッドReturnTypeと定義済みの型を比較する方法
- 2. ライブレンジと定義の比較
- 3. NamespacePrefixとローカルに定義されたnamespacePrefixとの比較
- 4. C++のメソッド定義と変数宣言
- 5. 匿名クラスから新しく定義されたメソッドを呼び出す
- 6. マップ内の匿名関数内のメソッドは定義されていません
- 7. Javaのメソッドで定義されたアクセスクラス
- 8. Javaの再定義されたメソッド
- 9. クラスの外で定義されたメソッド?
- 10. ネストされたインスタンスの未定義メソッド
- 11. 未定義メソッドとattr_accessor
- 12. ループバックモデルの定義とjson-schemaの比較
- 13. メソッドの定義
- 14. メソッドの比較は、タイプASSIGNRESで定義されていません
- 15. 再帰的に定義された型のスカラと==メソッド
- 16. メソッド内で定義されたクラスのメソッドにアクセス
- 17. プロパティ/メソッド定義
- 18. Python定義メソッド
- 19. C++テンプレートを使ったメソッド定義
- 20. メソッドの再定義
- 21. C#カスタムコンバージェントと比較デリゲート
- 22. 任意の名前のメソッドを定義
- 23. ラムダ式対匿名のメソッド
- 24. ラムダ記法によるC#メソッド定義
- 25. C# - 匿名デリゲート
- 26. 未定義メソッド `acts_as_messageable_messages_path`
- 27. 未定義メソッド 'assign_to'
- 28. 以前に定義された時間を比較します。
- 29. なぜ引数のメソッドの内部メソッドの定義メソッド匿名の内部クラスは動作しますか?
- 30. SQL Server - 'CREATE TABLE' SQLスクリプトをテーブル定義と比較するC#
論理の分離は私が考慮しなかったものであり、パラメータを渡すことなくローカル変数へのアクセスの容易さは興味深いものです。 Parallel ExtensionsはC#4.0の機能ですか? –
私は2つが相互に排他的ではないことを付け加えたいと思います。再利用性とクロージャの利点を同時に得るために、ほとんどの場合通常の関数を呼び出す無名関数を持つことはしばしば便利です。 –
はい、Parallel Extensionsには4.0が付属しています。 –