4

我正在尝试用 C# 语言解析公式,例如

"5*3 + 2" 
"(3*4 - 2)/5"

是否可以在 C# 或 VBScript、JavaScript 等脚本中执行(将在 c# 程序中调用)。

4

3 回答 3

4

我在Flee方面拥有丰富的经验,这是一个 C# 库,用于评估您所描述的表达式。您可以将表达式评估为强类型语句,因此如果您想要一个整数,例如,“(1 + 2)* 5”可以,但“hello world”不行。

您甚至可以挂钩特定的变量或函数。Flee示例页面是一个很好的起点。

于 2010-04-15T02:02:24.757 回答
2

我以前在 C# 中使用过一个技巧来做这种事情,那就是使用 JScript.NET 的eval函数。你会在我对这个问题的回答中找到完整的代码。它不依赖于像 VBScript 或 JavaScript 这样的脚本语言,它是纯 .NET,而且我使用的实现从 C# 代码动态生成 JScript.NET 程序集,因此无需在您的解决方案中混合语言。

于 2010-04-15T02:06:13.063 回答
1

我已经成功地使用 Microsoft 的Dynamic Linq示例来动态制定使用System.Linq.Expressions 命名空间下的类型的表达式。这对我来说效果很好,并且允许我使用更自然的 C# 语法来代替ActiveReports默认表达式。

于 2010-04-15T02:17:05.087 回答