美文网首页
C# 表达式树 (12)

C# 表达式树 (12)

作者: wwmin_ | 来源:发表于2021-02-03 21:34 被阅读0次

系列文章: C# 表达式树及其应用 (Expression 类)

本节继续讲解Expression相关的API, 力争把相关api 都使用简短demo说明一下

  • Multiply 创建一个表示不进行溢出检查的算术乘法运算的 BinaryExpression。
    //Multiply   创建一个表示不进行溢出检查的算术乘法运算的 BinaryExpression。
    void MultiplySample()
    {
        Expression expr = Expression.Multiply(Expression.Constant(1), Expression.Constant(2));
        Expression.Lambda<Func<int>>(expr).Compile()().Dump("Multiply");//2
    }
    MultiplySample();

    //MultiplyAssign  创建一个表示不进行溢出检查的乘法赋值运算的 BinaryExpression。 同AddAssign
  • Negate 创建一个表示算术求反运算的 UnaryExpression。
    //Negate     创建一个表示算术求反运算的 UnaryExpression。
    void NegateSample()
    {
        Expression negateExpr = Expression.Negate(Expression.Constant(5));
        Expression.Lambda<Func<int>>(negateExpr).Compile()().Dump("Negate");//-5
    }
    NegateSample();
  • New 创建一个 NewExpression。
    //New   创建一个 NewExpression。
    void NewSample()
    {
        NewExpression newDictionaryExpression = Expression.New(typeof(Dictionary<int, string>));
        newDictionaryExpression.ToString().Dump("New");//new Dictionary`2()

        NewExpression newListExpression = Expression.New(typeof(List<int>));
        newListExpression.ToString().Dump("New");//new List`1()
    }
    NewSample();
  • 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();
  • 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();
  • 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

本文作者:wwmin
微信公众号: DotNet技术说
本文链接:https://www.jianshu.com/p/e813ba39dfab
关于博主:评论和私信会在第一时间回复。或者[直接私信]我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,关注点赞, 您的鼓励是博主的最大动力!

相关文章

  • C# 表达式树 (12)

    系列文章: C# 表达式树及其应用 (Expression 类)[https://www.jianshu.com/...

  • C# 表达式树 (3)

    系列文章: C# 表达式树及其应用 (Expression 类)[https://www.jianshu.com/...

  • C# 表达式树 (6)

    系列文章: C# 表达式树及其应用 (Expression 类)[https://www.jianshu.com/...

  • C# 表达式树 (2)

    系列文章: C# 表达式树及其应用 (Expression 类)[https://www.jianshu.com/...

  • C# 表达式树 (1)

    系列文章: C# 表达式树及其应用 (Expression 类)[https://www.jianshu.com/...

  • C# 表达式树 (4)

    系列文章: C# 表达式树及其应用 (Expression 类)[https://www.jianshu.com/...

  • C# 表达式树 (5)

    系列文章: C# 表达式树及其应用 (Expression 类)[https://www.jianshu.com/...

  • C# 表达式树 (7)

    系列文章: C# 表达式树及其应用 (Expression 类)[https://www.jianshu.com/...

  • C# 表达式树 (9)

    系列文章: C# 表达式树及其应用 (Expression 类)[https://www.jianshu.com/...

  • C# 表达式树 (14)

    系列文章: C# 表达式树及其应用 (Expression 类)[https://www.jianshu.com/...

网友评论

      本文标题:C# 表达式树 (12)

      本文链接:https://www.haomeiwen.com/subject/xcomtltx.html