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

11

我正在使用ANTLR玩耍和学习,为.NET构建一个简单的DSL,将脚本字符串转换为动态方法。我的第一个想法是将其翻译成IL操作码,但现在我正在阅读关于表达式树用于DM创建的内容。看起来我可以使用表达式树生成任何方法,就像IL代码一样?

谢谢!

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


你无法使用表达式树来定义新类型。IL更加灵活(但生成起来仍然很容易)。 - SK-logic
1个回答

9
IL代码提供了更多的功能。例如,您可以使用它来发出针对.NET CLR正确的代码,但不一定是您可以用C#或VB.NET编写的代码。
但总的来说,您应该能够使用表达式树做任何想做的事情,并且它们更容易理解。
发出IL代码可能比编译表达式树稍微快一些。我不会担心这个(过早优化),但值得注意。请参阅使用动态变量会如何影响性能?以获取一些性能规格。

2
两者之间的一个重要区别是,IL可以用于创建整个类和程序集,而表达式仅可用于创建方法。 - svick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接