C# 表达式的理解

目录

Lambda表达式/表达式目录树

Expression

Lambda表达式/表达式目录树

  1. 在C#里面表达式有Lambda表达式和表达式目录树。
  2. Lambda表达式是一个匿名函数,其本质上就是一个方法,匿名方法。
  3. 在匿名方法的基础上,进一步简化了创建委托实例所需要的代码。
  4. 但是匿名函数不等于匿名方法,匿名函数包含了匿名方法和Lambda表达式两种概念。
  5. 匿名方法只能转换为委托。
  6. Lambda作为表达式,可以被C#编译器转换为委托,也可以被编译器转换为表达式。
  7. 作为委托和表达式目录树,两者在IL阶段的表示是不一样的。
  8. 作为委托的IL,在运行期间能被CLR直接执行。
  9. 作为表达式目录树,在运行期间不能被CLR直接执行,而是通过相应的Provider转换为所需要的东西, 比如在EFCore中将Expression类型转换为SQL。
  10. 另外在委托或者事件上执行+=/-=的时候用拉姆达表达式不能移除,因为生成的方法不是同一个方法。

Expression

  1. 表达式目录树是一种数据结构,是一个类的封装,用树形的数据结构来表示具体的代码。
  2. 描述了多个变量或者常量之间的关系,并且按照一定的规则进行组装。
  3. 可以像委托一样使用拉姆达表达式来快捷声明。
  4. 但是不能有语句块,声明时只能有一行代码。
  5. 可以通过Compile函数,编译成一个委托。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木子丶鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值