C#中的lambda,只要它是一个没有括号声明一个主体的单个表达式,可以编译成表达式树(通过Expression<TDel>
类型)或委托实例(Func<...>
, Action<...>
和朋友们,基于推断的用法。
我的问题是:有没有办法欺骗语言/编译器使用同一个lambda声明,树和委托进行表示,而不重复自己?
换句话说,这可以在没有明确要求表达式树然后在其上运行.Compile()
的情况下完成吗?
如果没有,是否有理由认为将编译推迟到此运行时方法并不会对.NET实现产生如此大的影响?在我的特定用例中,这些lambdas没有捕获组,这意味着如果不存在编译时解决方案,我仍然可以将它们加热并手动缓存它们,但是......呃,这是另一种蠕虫病毒。