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()();