一尘不染

委托关键字与Lambda表示法

c#

编译后,它们之间是否有区别:

delegate { x = 0; }

() => { x = 0 }


阅读 381

收藏
2020-05-19

共1个答案

一尘不染

简短的回答:不。

较长的答案可能不相关:

  • 如果将lambda分配给委托类型(例如FuncAction),则将获得一个匿名委托。
  • 如果将lambda分配给Expression类型,则将获得一个表达式树,而不是一个匿名委托。然后可以将表达式树编译为匿名委托。

编辑:这是表达式的一些链接。

  • System.Linq.Expression.Expression(TDelegate)(从此处开始)。
  • 具有委托的Linq内存(例如System.Func)使用System.Linq.Enumerable。带有表达式的Linq to SQL(以及其他任何东西)使用System.Linq.Queryable。检查这些方法的参数。
  • ScottGu解释。简而言之,Linq内存中将产生一些匿名方法来解决您的查询。Linq to SQL将产生一个表示查询的表达式树,然后将该树转换为T-SQL。Linq to Entities将产生一个表示查询的表达式树,然后将该树转换为适合平台的SQL。
2020-05-19