通过简单的算术表达式作为C#中方法的参数

时间:2014-11-15 20:02:15

标签: c#

我有学校作业,我需要解决,但我不知道该怎么做。 我需要创建方法Calculate(在类示例中)

Example.Calculate(5 + 10);

此方法接收两个数字的算术表达式(NOT字符串)并计算它的值。是否可以在C#中传递参数作为表达式以及如何操作?

2 个答案:

答案 0 :(得分:2)

是的,您可以使用Expression tree之类的:

public class Example
{
    public static int Calculate(Expression<Func<int>> expr)
    {
       return expr.Compile()();
    }
}
void Main()
{
    var mult = Example.Calculate(() => 4 * 3); //returns 12
    var add = Example.Calculate(() => 4 + 3);  // returns 7
}

但是在这种情况下你也可以跳过表达式树并使用lambda:

public static int Calculate(Func<int> expr)
{
   return expr();
}

答案 1 :(得分:0)

你只需要一个小技巧就可以做到这一点:

public class Example
{
   public static T Calculate<T>(T calculation)
   {
      return calculation;
   }
}

var val1 = Example.Calculate(5+10);
var val2 = Example.Calculate(5*10);