式ツリーが役立つ例にはどのようなものがありますか?

StackOverflow https://stackoverflow.com/questions/27726

  •  09-06-2019
  •  | 
  •  

質問

式ツリーの概念は完全に理解していますが、それが役立つ状況を見つけるのに苦労しています。式ツリーを適用できる特定のインスタンスはありますか?それとも、コードの転送メカニズムとしてのみ役立つのでしょうか?ここで何かが欠けているような気がします。ありがとう!

役に立ちましたか?

解決

それとも、コードの転送メカニズムとしてのみ役立つのでしょうか?

として便利です 実行メカニズム コード用。の使用 インタプリタパターン, 、式ツリーは直接解釈できます。これは非常に簡単かつ迅速に実装できるため便利です。このようなインタプリタは遍在しており、何も「解釈」しないように見える場合でも使用されます。ネストされた構造を印刷するため。

他のヒント

一部の単体テスト モック フレームワークは、厳密に型指定された期待値/検証を設定するために式ツリーを利用します。つまり:

myMock.Verify(m => m.SomeMethod(someObject)); // tells moq to verify that the method
                                              // SomeMethod was called with 
                                              // someObject as the argument

ここで、式が実際に実行されることはありませんが、式自体には興味深い情報が含まれています。式ツリーを使用しない代替案は次のとおりです。

myMock.Verify("SomeMethod", someObject) // we've lost the strong typing

式ツリーは、何らかの方法で関数ロジックを変更または再適用するために関数ロジックにアクセスする必要がある場合に役立ちます。

Linq to SQL が良い例です。

//a linq to sql statement
var recs (
    from rec in LinqDataContext.Table
    where rec.IntField > 5
    select rec );

式ツリーがない場合、このステートメントはすべてのレコードを返し、それぞれに C# where ロジックを適用する必要があります。

式ツリーを使用すると、 where rec.IntField > 5 SQL に解析できます。

--SQL statment executed
select *
from [table]
where [table].[IntField] > 5
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top