【C#表达式树 五】工厂模式创建表达式树节点

 

Not 创建一个表示按位求补运算的 UnaryExpression。

    //Not   创建一个表示按位求补运算的 UnaryExpression。
    void NotSample()
    {
        Expression notExpr = Expression.Not(Expression.Constant(true));
        notExpr.ToString().Dump("NotExpr");//Not(true)
        Expression.Lambda<Func<bool>>(notExpr).Compile()().Dump("Not");//false
    }
    NotSample();

 

NotEqual 创建一个表示不相等比较的 BinaryExpression。

    //NotEqual   创建一个表示不相等比较的 BinaryExpression。
    void NotEqualSample()
    {
        Expression notEqualExpr = Expression.NotEqual(Expression.Constant(1), Expression.Constant(2));
        notEqualExpr.ToString().Dump("NotEqualExpr");//(1!=2)
        Expression.Lambda<Func<bool>>(notEqualExpr).Compile()().Dump("NotEqual");//true
    }
    NotEqualSample();

    //OnesComplement    返回表示一的补数的表达式。//TODO

创建数组

NewArrayInit 创建一个表示创建一维数组并使用元素列表初始化该数组的 NewArrayExpression

    //NewArrayInit    创建一个表示创建一维数组并使用元素列表初始化该数组的 NewArrayExpression。
    void NewArrayInitSample()
    {
        List<Expression> trees = new List<Expression>()     {
            Expression.Constant("oak"),
            Expression.Constant("fir"),
            Expression.Constant("spruce"),
            Expression.Constant("alder")
          };

        NewArrayExpression newArrayExpression = Expression.NewArrayInit(typeof(string), trees);
        newArrayExpression.ToString().Dump("NewArrayInit");
    }
    NewArrayInitSample();



NewArrayBounds 创建一个表示创建具有指定秩的数组的 NewArrayExpression

    //NewArrayBounds   创建一个表示创建具有指定秩的数组的 NewArrayExpression。
    void NewArrayBoundsSample()
    {
        NewArrayExpression newArrayExpression = Expression.NewArrayBounds(
                typeof(string),
                Expression.Constant(3),
                Expression.Constant(2)
            );
        newArrayExpression.ToString().Dump("NewArrayBounds");//new System.String[,](3, 2)
    }
    NewArrayBoundsSample();

 

上一篇:C++中的模板元编程


下一篇:【人工智能->机器学习->深度学习】