C#动态方法 - IL与表达式树

时间:2013-02-01 00:39:04

标签: c# antlr expression-trees dsl il

我正在使用ANTLR构建一个简单的.NET for .NET,将字符串中的脚本转换为Dynamic Method。我的第一个想法是转换为IL操作码,但现在我正在阅读有关DM创建的表达式树。似乎我可以使用表达式树生成任何方法,就像IL代码一样?

谢谢!

代码:https://github.com/ricardoborges/NPortugol2

1 个答案:

答案 0 :(得分:9)

IL Code为您提供更多功能。例如,您可以使用它来发出适用于.NET CLR的代码,但不一定是您可以使用C#或VB.NET编写的代码。

但总的来说,是的,你应该能够做任何你想要用表达式树做的事情,并且它们更容易包裹你的头。

发送IL代码可能比编译表达式树要快一些。我不担心这个(过早优化),但值得注意。有关某些性能规格,请参阅How does having a dynamic variable affect performance?