在 C# 中将简单的算术表达式作为方法的参数传递

本文关键字:表达式 参数传递 方法 简单 | 更新日期: 2023-09-27 18:30:34

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

例.计算(5+10);

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

在 C# 中将简单的算术表达式作为方法的参数传递

是的,你可以像这样使用表达式树:

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();
}

你可以简单地用一个小技巧来做到这一点:

public class Example
{
   public static T Calculate<T>(T calculation)
   {
      return calculation;
   }
}
var val1 = Example.Calculate(5+10);
var val2 = Example.Calculate(5*10);