首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

Expression.Condition跟Expression.IfThenElse区别

2013-01-28 
Expression.Condition和Expression.IfThenElse区别Expression.Condition和Expression.IfThenElse有什么区

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

热点排行