【已更新最新开发文章,点击查看详细】
让我们来了解一下 framework 类的设计方式,而不是逐一查看完整列表。
它们可能更复杂:表达式 (-B + Math.Sqrt(B*B - 4 * A * C)) / (2 * A) 返回二次方程的一个根(若方程有解)。
System.Linq.Expression
可以搜索特定的节点类型,然后使用这种表达式的特定属性。
我的做法是,先查看节点类型,再转换为变量访问表达式,然后查看特定表达式类型的属性:
Expression<Func<int, int>> addFive = (num) => num + 5; if (addFive.NodeType == ExpressionType.Lambda) { var lambdaExp = (LambdaExpression)addFive; var parameter = lambdaExp.Parameters.First(); Console.WriteLine("参数名称:" + parameter.Name); Console.WriteLine("参数类型:" + parameter.Type); } Console.ReadKey(); }
输出结果:
创建表达式树
例如,此代码将生成一个 Add 表达式:
// 加法是“1+2”的加法表达式 var one = Expression.Constant(1, typeof(int)); var two = Expression.Constant(2, typeof(int)); var addition = Expression.Add(one, two);
该复杂性是提供由 C# 语言提供的丰富词汇的功能所必需的。
导航 API
我不会记住所有内容,而是会采用有关使用表达式树的技巧,如下所示:
- 如果想要遍历和理解表达式树,这将非常有用。
- 这些方法可以从其子节点集生成任何表达式类型。
- 查看
ExpressionVisitor类,以生成一个经过修改的表达式树。
【已更新最新开发文章,点击查看详细】