2013-02-01 4 views
8

ANTLRで.NET用の簡単なDSLを構築し、文字列のスクリプトをダイナミックメソッドに変換することで、少ししか学習しません。私の最初のアイデアはILのopcodeに翻訳されましたが、今はDMの作成のための表現木について読んでいます。私は、ILコードのように、表現木を使って任意の方法を作ることができるようですね?C#ダイナミックメソッド - IL対エクスプレッションツリー

ありがとうございました!

コード:https://github.com/ricardoborges/NPortugol2

+0

式ツリーで新しい型を定義することはできません。 ILははるかに柔軟性のある方法です(ただし、生成は非常に簡単です)。 –

答えて

9

ILコードはあなたに少しより多くの電力を提供します。たとえば、.NET CLRに適したコードを出力できますが、必ずしもC#またはVB.NETで記述できたコードではありません。

しかし、一般的には、表現木で何かしたいことができるはずです。頭を包むのはずっと簡単です。

イルミネーションコードは、おそらく表現ツリーをコンパイルするよりもやや速く動作します。私はこれについて心配しません(早すぎる最適化)、それは注目に値する。いくつかの性能仕様については、How does having a dynamic variable affect performance?を参照してください。

+0

クール!それを説明していただきありがとうございます!私はリンクを読むよ! – Ricardo

+2

2つの重要な違いの1つは、ILを使用してクラスとアセンブリ全体を作成できることです。式はメソッドの作成にのみ使用できます。 – svick

関連する問題