是否有表示运算符类型的.NET类?

use*_*774 7 .net c#

我想做以下事情:

*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将有效地表现为委托.