我想做以下事情:
*OperatorType* o = *OperatorType*.GreaterThan;
int i = 50;
int increment = -1;
int l = 0;
for(i; i o l; i = i + increment)
{
//code
}
Run Code Online (Sandbox Code Playgroud)
这个概念可以使用eval()在javascript中进行克制...但是这个想法是有一个循环,可以根据运行时设置的值前进或后退.
这可能吗?
谢谢
Joh*_*lph 13
是的,它在.NET Expression树中.具体来说,您需要使用BinaryExpression.Add().构建表达式树不需要手工完成,编译器很乐意将它看到的任何lambda表达式Expression<T>
转换为有效的表达式树.
// Creating an expression tree.
Expression<Func<int, int, bool>> greaterThan = (l, r) => l > r;
int i = 50;
int increment = -1;
int l = 0;
for(i; greaterThan(o, i); i = i + increment)
{
//code
}
Run Code Online (Sandbox Code Playgroud)
调用表达式树会自动将其编译为动态方法,而GreaterThan将有效地表现为委托.