C# Lambda表达式树浅谈

开发 后端
这里介绍C# Lambda表达式树,C# Lambda表达式树允许我们像处理数据(比如读取,修改)一样来处理Lambda表达式。我以一个例子简单说明。

C#新语言特性有很多值得学习的地方,这里我们主要介绍C# Lambda表达式树,包括介绍C# Lambda表达式树要点等方面。

C# Lambda表达式树

C# Lambda表达式树允许我们像处理数据(比如读取,修改)一样来处理Lambda表达式。我以一个例子简单说明:

  1. Expression<Func<int, bool>> filter = n => (n * 3) < 5;  
  2. BinaryExpression lt = (BinaryExpression)filter.Body;  
  3. BinaryExpression mult = (BinaryExpression)lt.Left;  
  4. ParameterExpression en = (ParameterExpression)mult.Left;  
  5. ConstantExpression three = (ConstantExpression)mult.Right;  
  6. ConstantExpression five = (ConstantExpression)lt.Right;  
  7. var One = filter.Compile();  
  8. Console.WriteLine("Result: {0},{1}", One(5), One(1));  
  9. Console.WriteLine("({0} ({1} {2} {3}) {4})", lt.NodeType,mult.
    NodeType, en.Name, three.Value, five.Value); 

效果图如下:

Lambda表达式树

C# Lambda表达式树要点

1. Lambda表达式的参数类型可以忽略,因为可以根据使用的上下文进行推断。
2. Lambda表达式的主体(body)可以是表达式,也可以是语句块。
3. Lambda表达式传入的实参将参与类型推断,以及方法重载辨析。
4. Lambda表达式和表达式体可以被转换为表达式树。
5. 表达式树允许lambda表达式能够代表数据结构替代表示为执行代码。

【编辑推荐】

  1. C# const常量详细介绍
  2. C# Lambda表达式学习笔记
  3. C#隐式类型局部变量经验总结
  4. 调用C# Thread.Start()方法
  5. C# CheckStatus()方法
责任编辑:佚名 来源: 赛迪网
相关推荐

2009-08-27 09:44:59

C# Lambda表达

2009-09-09 13:01:33

LINQ Lambda

2009-08-26 16:17:23

C# Lambda表达

2009-07-09 09:51:07

Lambda表达式C#

2024-03-25 13:46:12

C#Lambda编程

2021-08-31 07:19:41

Lambda表达式C#

2011-05-20 17:50:45

C#

2010-09-14 14:05:42

C#委托

2009-09-14 13:57:20

C# Lambda表达Lambda表达式

2022-11-07 07:11:19

C#lambda函数

2010-10-19 10:03:02

Lambda表达式

2009-04-29 09:05:59

Lambda抽象代表.NET

2009-08-07 15:41:39

C#正规表达式

2009-05-22 09:48:07

表达式树泛型委托.NET

2023-11-02 08:25:58

C++Lambda

2009-09-15 15:18:00

Linq Lambda

2022-12-05 09:31:51

接口lambda表达式

2009-07-01 09:56:10

C#3.0

2020-10-16 06:40:25

C++匿名函数

2009-09-11 09:48:27

Linq Lambda
点赞
收藏

51CTO技术栈公众号