C# 表达式树 Expression
表达式树是定义代码的数据结构。 它们基于编译器用于分析代码和生成已编译输出的相同结构。
几种常见的表达式
BinaryExpression 包含二元运算符的表达式
1 BinaryExpression binaryExpression = Expression.MakeBinary(ExpressionType.Add,Expression.Constant(1),Expression.Constant(2)); 2 Console.WriteLine(binaryExpression.ToString());//(1+2) 不进行溢出检查 3 binaryExpression = Expression.MakeBinary(ExpressionType.AddChecked, Expression.Constant(3), Expression.Constant(4)); 4 Console.WriteLine(binaryExpression.ToString());//(3+4) 进行溢出检查 5 binaryExpression = Expression.MakeBinary(ExpressionType.Subtract, Expression.Constant(5), Expression.Constant(6)); 6 Console.WriteLine(binaryExpression.ToString());//(5-6) 不进行溢出检查 7 binaryExpression = Expression.MakeBinary(ExpressionType.SubtractChecked, Expression.Constant(7), Expression.Constant(8)); 8 Console.WriteLine(binaryExpression.ToString());//(7-8) 进行溢出检查 9 binaryExpression = Expression.MakeBinary(ExpressionType.Multiply, Expression.Constant(9), Expression.Constant(10)); 10 Console.WriteLine(binaryExpression.ToString());//(9*10) 不进行溢出检查 11 binaryExpression = Expression.MakeBinary(ExpressionType.MultiplyChecked, Expression.Constant(11), Expression.Constant(12)); 12 Console.WriteLine(binaryExpression.ToString());//(11*12) 进行溢出检查 13 binaryExpression = Expression.MakeBinary(ExpressionType.Divide, Expression.Constant(13), Expression.Constant(14)); 14 Console.WriteLine(binaryExpression.ToString());//(13/14) 15 binaryExpression = Expression.MakeBinary(ExpressionType.Modulo, Expression.Constant(15), Expression.Constant(16)); 16 Console.WriteLine(binaryExpression.ToString());//(15%16)
View CodeBlockExpression 包含一个表达式序列的块,表达式中可定义变量
1 BlockExpression blockExpr = Expression.Block( 2 Expression.Call(null, typeof(Console).GetMethod("Write", new Type[] { typeof(String) }), Expression.Constant("Hello ")), 3 Expression.Call(null, typeof(Console).GetMethod("WriteLine", new Type[] { typeof(String) }), Expression.Constant("World!")), 4 Expression.Constant(42) 5 ); 6 var result = Expression.Lambda<Func<int>>(blockExpr).Compile()(); 7 Console.WriteLine("**************************"); 8 foreach (var expr in blockExpr.Expressions) 9 Console.WriteLine(expr.ToString()); 10 Console.WriteLine("**************************"); 11 Console.WriteLine(result);
View Code程序执行结果
ConditionalExpression 具有条件运算符的表达式
Expression conditionExpr = Expression.Condition(Expression.Constant(num > 10),Expression.Constant("num is greater than 10"),Expression.Constant("num is smaller than 10"));
ConstantExpression 具有常数值的表达式
1 Expression.Constant(5.5); 2 Expression.Constant("Hello World!");
View CodeDefaultExpression 类型或空表达式的默认值
温馨提示: 本文由杰米博客推荐,转载请保留链接: https://www.jmwww.net/file/9597.html