当前位置: 首页 > news >正文

1.3 Expression.Lambda表达式树的介绍

在 C# 中,几乎所有东西都是表达式,比如:

        1).   3是常量表达式 : Expression.Constant

        2).    x,y是变量表达式:Expression.Parameter(typeof(变量类型), 变量名称);

        3).   !a 一元表达式

        4). a+b 二元表达式, 比如Expression.Add

        5).Math.Sin(x)  方法调用表达式, Expression.Call。

        6). new StringBuilder() : new 表达式。

显然表达式的组合可以形成表达式树,比如 2+Math.Sin(x+y).

通过表达式树,可以将代码逻辑表示为数据结构,并动态编译为可执行的委托. 举例如下:

例1:实现 y = a+b的函数功能

方法1),使用委托。
Func<int, int, int>  delFun = (a, b) => (a + b);
int y = delFun(2, 3);    //得到5


方法2),使用lamda表达式 + Expression。

Expression<Func<int, int, int>> myExpress = (a, b) => (a + b);
Func<int, int, int>  delFun = myExpress.Compile();
 int y = delFun(2, 3);  //得到5

方法3)一

http://www.dtcms.com/a/176328.html

相关文章:

  • LVS中的DR模式,直接路由模式
  • LeetCode:二叉树的最大深度
  • 基于DR模式的LVS集群案例
  • oracle 触发器与commit的先后执行顺序
  • Linux如何安装AppImage程序
  • Postman中https和http的区别是什么?
  • 2025数字中国创新大赛-数字安全赛道数据安全产业积分争夺赛决赛Writeup
  • fedora系统详解详细版本
  • 信息系统项目管理师-软考高级(软考高项)​​​​​​​​​​​2025最新(十)
  • 初学Python爬虫
  • 架设手游使用游戏盾SDK怎么提升网络速度?
  • 音频相关基础知识
  • RTC实时时钟DS1337S/PT7C4337WEX国产替代FRTC1337S
  • webRtc之指定摄像头设备绿屏问题
  • Ubuntu 单机多卡部署脚本: vLLM + DeepSeek 70B
  • 游戏引擎学习第262天:绘制多帧性能分析图
  • MySQL的深度分页如何优化?
  • ESP32开发入门(五):WiFi 开发实践
  • 0509滴滴前端项目常见内容
  • ElementUI 表格el-table自适应高度设置
  • 007 Linux 开发工具(上)—— vim、解放sudo、gc+
  • Golang 接口 vs Rust Trait:一场关于抽象的哲学对话
  • LeetCode383_赎金信
  • Jenkins 服务器上安装 Git
  • Apache Calcite 详细介绍
  • 【EasyPan】loadDataList方法及checkRootFilePid方法解析
  • comfyui 实现中文提示词翻译英文进行图像生成
  • VScode一直处于循环“正在重新激活终端“问题的解决方法
  • 【上位机——MFC】序列化机制
  • 机器学习在信用卡欺诈检测中的应用思考