デリゲートを定義するときに匿名メソッドを使用する必要があるのはいつですか。デリゲートを定義するときに正式に定義されたメソッドを使用する必要があるのはいつですか。
2 に答える
同じロジックを複数の場所で使用する必要がある場合は、別の方法を使用するのが理にかなっています。
ロジックを1回だけ使用する必要があり、それがかなり短い場合は、無名関数を使用するのが理にかなっています。デリゲートがそれを作成しているメソッドのローカル変数にアクセスする必要がある場合、無名関数はクロージャとして機能します。これも非常に便利です。
さらに、無名関数は、Parallel Extensionsを使用した並列化などに使用すると、かなり長い場合でも便利です。そのポイントの1つは、既存のシリアルコードを取得して、大部分を「インプレース」で並列化できることです。
また、テスト容易性を検討することもできます。デリゲートのコードが十分に複雑で、独自の単体テストが必要な場合は、メソッドとして公開するのが理にかなっています。(残念ながら、これは内部メソッドInternalsVisibleTo
またはパブリックメソッドのいずれかである必要があります。通常はプライベートメソッドが必要ですが、これは人生です。)
実行する必要がある関数がそのデリゲートによってのみ実行される必要がある場合(つまり、他の場所でその関数が必要ない場合)、および実行する必要がある関数/メソッドが比較的短い(最大5行)。
ただし、いつ何を使用するかについての厳密な規則はありません。
私見、匿名の方法はほとんどの状況で読みやすさに貢献しないことがわかったので、私はほとんどそれらを使用しません。