C#使用操作作为参数

时间:2011-04-28 06:52:20

标签: c#

我正在尝试创建一个函数,我可以在其中为> < == !=等操作。 我想知道是否可以将其中一个设置为函数的参数,

ie:UseOperator("test", >, 0)

如果不是最好的方法来处理这样的事情?也许是一个枚举?

3 个答案:

答案 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 ">":
        //.....
   }
}