5

線形関数 (y=ax+b) を返すコードを次に示します。

public static Func<double, double> LinearFunc(double slope, double offset)
{
    return d => d * slope + offset;
}

式ツリーでも同じことができますが、努力する価値があるかどうかはわかりません。

ラムダがパラメーターをキャプチャすることはわかっていますが、これは欠点です。私が気付いていない長所/短所はありますか?

私の主な質問は、このシナリオで式ツリーを使用する価値があるかどうかです。なぜですか、そうでないのですか?

4

1 に答える 1

5

コンパイル時のコードを知っていれば、ほぼ確実にラムダ式を使用するでしょう。パラメータが (定数として表現されるのではなく) キャプチャされるという事実は、ほとんどの場合無関係です。式ツリーの構築を正当化するには、それが重要であることを証明する必要があります。

式ツリーは、次の場合により適しています。

  • さまざまな式から動的に構築したい
  • LINQ プロバイダなどのデータとして式ツリーを分析したい

そうでない場合、ラムダ式を使用することによる読みやすさのメリットは非常に大きいです。

于 2012-05-26T15:13:56.707 に答える