我想做以下事情:
*OperatorType* o = *OperatorType*.GreaterThan;
int i = 50;
int increment = -1;
int l = 0;
for(i; i o l; i = i + increment)
{
//code
}
这个概念可以在 javascript 中使用 eval()...但是这个想法是有一个循环 可以根据运行时设置的值前进或后退。
这可能吗?
谢谢
最佳答案
是的,它在 .NET 中 Expression trees.具体来说,你需要使用 BinaryExpression.Add() .构建表达式树不需要手动完成,编译器会很乐意转换它看到分配给 Expression<T>
的任何 lambda 表达式。进入有效的表达式树。
// 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
}
调用表达式树会自动将其编译为动态方法,而 greaterThan 将有效地充当委托(delegate)。
关于c# - 是否有表示运算符类型的 .NET 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2767463/