系列文章: 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 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,关注点赞, 您的鼓励是博主的最大动力!
网友评论