delegate keyword vs. lambda notation(委托关键字与 lambda 表示法)
本文介绍了委托关键字与 lambda 表示法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
一经编译,有没有区别:
Once it is compiled, is there a difference between:
delegate { x = 0; }
和
() => { x = 0 }
?
推荐答案
简答:没有.
可能不相关的较长答案:
Longer answer that may not be relevant:
- 如果将 lambda 分配给委托类型(例如
Func
或Action
),您将获得匿名委托. - 如果将 lambda 分配给 Expression 类型,您将获得表达式树而不是匿名委托.然后可以将表达式树编译为匿名委托.
- If you assign the lambda to a delegate type (such as
Func
orAction
) you'll get an anonymous delegate. - If you assign the lambda to an Expression type, you'll get an expression tree instead of a anonymous delegate. The expression tree can then be compiled to an anonymous delegate.
这是表达式的一些链接.
Here's some links for Expressions.
- System.Linq.Expression.Expression(TDelegate)(开始在这里).
- Linq in-memory with delegates(例如 System.Func)使用 System.Linq.Enumerable.带有表达式的 Linq to SQL(和其他任何东西)使用 System.Linq.可查询.查看这些方法的参数.
- 一个解释来自 ScottGu.简而言之,Linq in-memory 会产生一些匿名方法来解决您的查询.Linq to SQL 将生成一个表示查询的表达式树,然后将该树转换为 T-SQL.Linq to Entities 将生成一个表示查询的表达式树,然后将该树转换为适合平台的 SQL.
- System.Linq.Expression.Expression(TDelegate) (start here).
- Linq in-memory with delegates (such as System.Func) uses System.Linq.Enumerable. Linq to SQL (and anything else) with expressions uses System.Linq.Queryable. Check out the parameters on those methods.
- An Explanation from ScottGu. In a nutshell, Linq in-memory will produce some anonymous methods to resolve your query. Linq to SQL will produce an expression tree that represents the query and then translate that tree into T-SQL. Linq to Entities will produce an expression tree that represents the query and then translate that tree into platform appropriate SQL.
这篇关于委托关键字与 lambda 表示法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:委托关键字与 lambda 表示法
基础教程推荐
猜你喜欢
- SSE 浮点算术是否可重现? 2022-01-01
- 有没有办法忽略 2GB 文件上传的 maxRequestLength 限制? 2022-01-01
- c# Math.Sqrt 实现 2022-01-01
- 如何激活MC67中的红灯 2022-01-01
- 将 Office 安装到 Windows 容器 (servercore:ltsc2019) 失败,错误代码为 17002 2022-01-01
- 如何在 IDE 中获取 Xamarin Studio C# 输出? 2022-01-01
- MS Visual Studio .NET 的替代品 2022-01-01
- rabbitmq 的 REST API 2022-01-01
- 将 XML 转换为通用列表 2022-01-01
- 为什么Flurl.Http DownloadFileAsync/Http客户端GetAsync需要 2022-09-30