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

标签 c# .net

我想做以下事情:

*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/

相关文章:

c# - 在内存中操作文本文件的最佳方法 : read as byte[] first? 读取为 File.ReadAllText() 然后另存为二进制文件?

c# - 未找到方法 : 'System.Threading.Monitor.Enter' with Nhibernate, Mono 和 SQLite

c# - 领域模型及相关数据(贫血领域模型)

.net - 在 My.Setting 中重置 key

.net - 无法在自定义端口上打开 dockerized .net core api

c# - 工具、菜单条 - 如何更改它们在 c# winforms 中的位置?

c# - Json.NET - 直接从流反序列化为动态?

c# - System.Progress 错误的调用顺序

c# - 将 Label 保持在 TabControl .NET 之上

c# - UWP 可以在 .NET 中运行吗?