我有学校作业,我需要解决,但我不知道该怎么做。 我需要创建方法Calculate(在类示例中)
Example.Calculate(5 + 10);
此方法接收两个数字的算术表达式(NOT字符串)并计算它的值。是否可以在C#中传递参数作为表达式以及如何操作?
答案 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);