用C#写算术表达式求值
时间: 2024-10-24 19:04:56 浏览: 39
c#.NET算数表达式求值程序
在C#中,你可以使用内置的`System.Linq.Expressions`命名空间下的`Expression`类及其派生类来解析和计算数学表达式。这里是一个简单的示例,展示如何构建和求解一个加法表达式的求值:
```csharp
using System;
using System.Linq.Expressions;
public class ExpressionEvaluator
{
public double Evaluate(string expression)
{
// 创建一个表达式树解析器
var parser = new ExpressionTreeParser(expression);
// 将输入字符串转换为Lambda表达式
Func<double, double, double> lambda = parser.Parse();
// 创建一个匿名函数来获取结果
return lambda(2, 3); // 这里可以替换为你想要求值的具体数值
}
}
class ExpressionTreeParser
{
private readonly string _expression;
public ExpressionTreeParser(string expression)
{
_expression = expression;
}
public Func<double, double, double> Parse()
{
// 使用 LINQ 表达式来解析并构建加法操作
var parameters = Expression.Parameter(typeof(double), "x");
var constant = Expression.Constant(0, typeof(double));
var add = Expression.Add(parameters, constant);
// 返回一个 Lambda 表达式,接受两个double参数并返回它们的和
return Expression.Lambda<Func<double, double, double>>(add, parameters).Compile();
}
}
// 使用示例
var evaluator = new ExpressionEvaluator();
Console.WriteLine(evaluator.Evaluate("x + 3")); // 输出:5
```
在这个例子中,我们首先创建了一个表达式树解析器,然后通过传入的数学表达式构建了一个Lambda表达式。Lambda表达式代表了原始的算术运算,最后编译它以便可以实际执行。
阅读全文