【已更新最新开发文章,点击查看详细】

让我们来了解一下 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();
        }

输出结果:

C#3.0新增功能10 表达式树 03 支持表达式树的框架类型

创建表达式树

例如,此代码将生成一个 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

我不会记住所有内容,而是会采用有关使用表达式树的技巧,如下所示:

  1. 如果想要遍历和理解表达式树,这将非常有用。
  2. 这些方法可以从其子节点集生成任何表达式类型。
  3. 查看 ExpressionVisitor 类,以生成一个经过修改的表达式树。
【已更新最新开发文章,点击查看详细】

相关文章: