系列文章: C# 表达式树及其应用 (Expression 类)
本节继续讲解Expression相关的API, 力争把相关api 都使用简短demo说明一下
- Multiply 创建一个表示不进行溢出检查的算术乘法运算的 BinaryExpression。
//Multiply 创建一个表示不进行溢出检查的算术乘法运算的 BinaryExpression。
void MultiplySample()
{
Expression expr = Expression.Multiply(Expression.Constant(1), Expression.Constant(2));
Expression.Lambda<Func<int>>(expr).Compile()().Dump("Multiply");//2
}
MultiplySample();
//MultiplyAssign 创建一个表示不进行溢出检查的乘法赋值运算的 BinaryExpression。 同AddAssign
- Negate 创建一个表示算术求反运算的 UnaryExpression。
//Negate 创建一个表示算术求反运算的 UnaryExpression。
void NegateSample()
{
Expression negateExpr = Expression.Negate(Expression.Constant(5));
Expression.Lambda<Func<int>>(negateExpr).Compile()().Dump("Negate");//-5
}
NegateSample();
- New 创建一个 NewExpression。
//New 创建一个 NewExpression。
void NewSample()
{
NewExpression newDictionaryExpression = Expression.New(typeof(Dictionary<int, string>));
newDictionaryExpression.ToString().Dump("New");//new Dictionary`2()
NewExpression newListExpression = Expression.New(typeof(List<int>));
newListExpression.ToString().Dump("New");//new List`1()
}
NewSample();
- NewArrayBounds 创建一个表示创建具有指定秩的数组的 NewArrayExpression。
//NewArrayBounds 创建一个表示创建具有指定秩的数组的 NewArrayExpression。
void NewArrayBoundsSample()
{
NewArrayExpression newArrayExpression = Expression.NewArrayBounds(
typeof(string),
Expression.Constant(3),
Expression.Constant(2)
);
newArrayExpression.ToString().Dump("NewArrayBounds");//new System.String[,](3, 2)
}
NewArrayBoundsSample();
- NewArrayInit 创建一个表示创建一维数组并使用元素列表初始化该数组的 NewArrayExpression。
//NewArrayInit 创建一个表示创建一维数组并使用元素列表初始化该数组的 NewArrayExpression。
void NewArrayInitSample()
{
List<Expression> trees = new List<Expression>() {
Expression.Constant("oak"),
Expression.Constant("fir"),
Expression.Constant("spruce"),
Expression.Constant("alder")
};
NewArrayExpression newArrayExpression = Expression.NewArrayInit(typeof(string), trees);
newArrayExpression.ToString().Dump("NewArrayInit");
}
NewArrayInitSample();
- Not 创建一个表示按位求补运算的 UnaryExpression。
//Not 创建一个表示按位求补运算的 UnaryExpression。
void NotSample()
{
Expression notExpr = Expression.Not(Expression.Constant(true));
notExpr.ToString().Dump("NotExpr");//Not(true)
Expression.Lambda<Func<bool>>(notExpr).Compile()().Dump("Not");//false
}
NotSample();
- NotEqual 创建一个表示不相等比较的 BinaryExpression。
//NotEqual 创建一个表示不相等比较的 BinaryExpression。
void NotEqualSample()
{
Expression notEqualExpr = Expression.NotEqual(Expression.Constant(1), Expression.Constant(2));
notEqualExpr.ToString().Dump("NotEqualExpr");//(1!=2)
Expression.Lambda<Func<bool>>(notEqualExpr).Compile()().Dump("NotEqual");//true
}
NotEqualSample();
//OnesComplement 返回表示一的补数的表达式。//TODO
本文作者:wwmin
微信公众号: DotNet技术说
本文链接:https://www.jianshu.com/p/e813ba39dfab
关于博主:评论和私信会在第一时间回复。或者[直接私信]我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,关注点赞, 您的鼓励是博主的最大动力!
网友评论