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

C# 表达式树 (8)

作者: wwmin_ | 来源:发表于2021-01-30 18:01 被阅读0次

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

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

  • IfThen 创建一个 ConditionalExpression,它表示带 if 语句的条件块。
//IfThen     创建一个 ConditionalExpression,它表示带 if 语句的条件块。
    void IfThenSample()
    {
        bool test = true;
        Expression ifThenExpr = Expression.IfThen(Expression.Constant(test),
                                    Expression.Call(
                                        null,
                                        typeof(Console).GetMethod("WriteLine", new Type[] { typeof(String) })!,
                                        Expression.Constant("The condition is true.")
                                        )
                                 );
        Expression.Lambda<Action>(ifThenExpr).Compile()();//The condition is true.
    }
    IfThenSample();
  • IfThenElse 创建一个 ConditionalExpression,它表示带 if 和 else 语句的条件块。
    //IfThenElse   创建一个 ConditionalExpression,它表示带 if 和 else 语句的条件块。
    void IfThenElseSample()
    {
        bool test = false;
        Expression ifThenElseExpr = Expression.IfThenElse(
            Expression.Constant(test),
            Expression.Call(
                null,
                typeof(Console).GetMethod("WriteLine", new Type[] { typeof(String) })!,
                Expression.Constant("The condition is true.")
            ),
            Expression.Call(
                null,
                typeof(Console).GetMethod("WriteLine", new Type[] { typeof(String) })!,
                Expression.Constant("The condition is false.")
            )
        );
        Expression.Lambda<Action>(ifThenElseExpr).Compile()();//The condition is false.
    }
    IfThenElseSample();
  • Increment (同Decrement) 创建一个 UnaryExpression,它表示按 1 递增表达式值。
    //Increment (同Decrement) 创建一个 UnaryExpression,它表示按 1 递增表达式值。 
  • Invoke 创建 InvocationExpression。
    //Invoke  创建 InvocationExpression。
    void InvokeSample()
    {
        //下面的示例演示如何使用 Invoke(Expression, Expression[]) 方法创建一个 InvocationExpression ,该对象表示调用具有指定自变量的 lambda 表达式。
        Expression<Func<int, int, bool>> largeSumTest = (num1, num2) => (num1 + num2) > 1000;
        InvocationExpression invocationExpression = Expression.Invoke(largeSumTest, Expression.Constant(100), Expression.Constant(900));
        invocationExpression.ToString().Dump();//Invoke((num1, num2) => ((num1 + num2) > 1000), 100, 900)
    }
    InvokeSample();

    //IsFalse   返回表达式的计算结果是否为 false。 //TODO

    //IsTrue    返回表达式的计算结果是否为 true。  //TODO

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

相关文章

  • C# 表达式树 (8)

    系列文章: 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# 表达式树 (8)

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