当前位置: 代码迷 >> LINQ >> Expression.Condition跟Expression.IfThenElse区别
  详细解决方案

Expression.Condition跟Expression.IfThenElse区别

热度:3469   发布时间:2013-02-26 00:00:00.0
Expression.Condition和Expression.IfThenElse区别
Expression.Condition和Expression.IfThenElse有什么区别?

------解决方案--------------------------------------------------------
类似于
? : 三元运算

if ... else ...
的区别。
------解决方案--------------------------------------------------------
另外Expression.IfThenElse是.NET 4.0新增的。
------解决方案--------------------------------------------------------
二者都可以达到条件判断的目的,当条件成立时,执行语句1,否则执行语句2

Expression.Condition 你可以把它看成C#里的三元运算符:如果第一个参数的计算结果为 true,则执行第二个参数;否则执行第三个参数。
Expression.IfThenElse 就是C#里的 if .. else 语句了

你说if..else语句和 三元运算符有什么区别?

Expression.Condition是这样使用的:

int num = 100;

Expression conditionExpr = Expression.Condition(
                           Expression.Constant(num > 10),
                           Expression.Constant("num is greater than 10"),
                           Expression.Constant("num is smaller than 10")
                         );
Console.WriteLine(conditionExpr.ToString());
  
Console.WriteLine(
    Expression.Lambda<Func<string>>(conditionExpr).Compile()());



而Expression.IfThenElse 使用方式则是这样的,


bool test = true;

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()();
  相关解决方案