委托关键字与Lambda表示法
编译后,它们之间是否有区别:
delegate { x = 0; }
和
() => { x = 0 }
?
回答:
简短的回答:不。
较长的答案可能不相关:
- 如果将lambda分配给委托类型(例如
Func
或Action
),则将获得一个匿名委托。 - 如果将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。
以上是 委托关键字与Lambda表示法 的全部内容, 来源链接: utcz.com/qa/405313.html