读书人

Expression.Condition跟Expression.If

发布时间: 2013-01-28 11:49:56 作者: rapoo

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

读书人网 >.NET

热点推荐