zoukankan      html  css  js  c++  java
  • 表达式树

    普通方法构造表达式树

            static void Main(string[] args)
            {
                //表达式树的参数
                ParameterExpression paramA = Expression.Parameter(typeof(int), "aa");
                ParameterExpression paramB = Expression.Parameter(typeof(int), "bb");
    
                //表达式树的主体部分
                BinaryExpression be = Expression.Add(paramA, paramB);
    
                //构造表达式树
                Expression<Func<int, int, int>> expressionTree = Expression.Lambda<Func<int, int, int>>(be, paramA, paramB);
    
                //分析树结构
                //主体部分
                BinaryExpression body = (BinaryExpression)expressionTree.Body;
    
                //左节点
                ParameterExpression left = (ParameterExpression)be.Left;
    
                //右节点
                ParameterExpression right = (ParameterExpression)be.Right;
    
    
                Console.WriteLine(expressionTree);
                Console.WriteLine(body);
                Console.WriteLine(left.Name);
                Console.WriteLine(right.Name);
                Console.ReadKey();
            }

    利用Lambda表达式构造表达式树

                    //利用Lambda表达式构造表达式树
                    Expression<Func<int, int, int>> expressionTree = (a, b) => a + b;
    
                    Console.WriteLine(expressionTree);
                    Console.WriteLine(expressionTree.Body);
                    var param = expressionTree.Parameters;
                    foreach (var item in param)
                    {
                        Console.WriteLine(item.Name + ":::" + item.Type);
                    }

    将表达式树转换成可执行代码

                    //利用Lambda表达式构造表达式树
                    Expression<Func<int, int, int>> expressionTree = (a, b) => a + b;
    
                    //生成委托的实例
                    Func<int, int, int> lambda = expressionTree.Compile();
    
                    //执行委托的实例
                    var result = lambda(1, 2);
    
                    Console.WriteLine(result);//3
  • 相关阅读:
    使用 PHPMailer 发邮件
    安装phpssdb扩展:
    CI安全
    CI调试应用程序
    Sphinx的GEO距离搜索 [转载]
    Lua开发环境搭建(Mac OS X)
    MySQL 的索引和最左前缀原则
    PHP解码Json(json_decode)字符串返回NULL的原因及解决方法(转载)
    PHP连接MySQL报错"No such file or directory"的解决办法
    web 性能优化指南阅读笔记
  • 原文地址:https://www.cnblogs.com/refuge/p/8578828.html
Copyright © 2011-2022 走看看