我正在尝试创建一个函数,我可以在其中为>
<
==
!=
等操作。
我想知道是否可以将其中一个设置为函数的参数,
ie:UseOperator("test", >, 0)
如果不是最好的方法来处理这样的事情?也许是一个枚举?
答案 0 :(得分:10)
最自然的方法是通过代表,IMO,例如类型为Func<int, int, bool>
。遗憾的是,您无法将运算符直接转换为委托 - 但您可以非常简单地编写方法并使用方法组转换:
public void UseOperator(string name, Func<int, int, bool> op, int value)
{
...
}
public static bool GreaterThan(int x, int y, value)
{
return x > y;
}
UseOperator("test", GreaterThan, 0);
Marc Gravell在generic operators中对MiscUtil的工作可能对您有用。
答案 1 :(得分:5)
这是不可能的,但您可以使用函数委托:
UseOperator("test", (x, y) => x > y, 0);
答案 2 :(得分:1)
如何将运算符解析为字符串值?
UseOperator("Test", ">", 0)
private void UseOperator(string str1, string operator, int intVlue)
{
switch(operator)
{
case ">":
//.....
}
}