NCalc:还有其他选择吗?

时间:2013-07-09 16:01:42

标签: c# ncalc

有没有人知道比NCalc更新的表达式评估器?最后一个版本是在2011年,一个(非常)快速的谷歌搜索几乎没有从我能看到的内容中返回。

5 个答案:

答案 0 :(得分:7)

我知道这是一个迟到的回应,但为了别人的搜索,也许是你自己。你看过罗斯林了吗?我相信微软现在正在使用它。您可以传递简单的c#或vb.net表达式来评估完整代码。以下示例显示了一个简单的数学问题

        ScriptEngine roslynEngine = new ScriptEngine();
        Roslyn.Scripting.Session session = roslynEngine.CreateSession();
        session.AddReference("System.Web");
        session.ImportNamespace("System");
        session.ImportNamespace("System.Web");
        var result = (session.Execute("1 + 1"));

答案 1 :(得分:4)

github here上有一个更新的叉子。

目前我不知道质量是否更好。

答案 2 :(得分:2)

我完全理解这个答案有多晚了但是我想提出我的解决方案,因为我相信如果有人希望在多个平台上使用表达式,它可以在使用NCalc之后添加更多的答案。< / p>

- 更新 -

我为C#创建了一个解析器,并计划在接下来的几个月内为Java和Swift实现它。这意味着您可以在多平台上评估表达式,而无需对每个平台进行调整。

虽然计划使用Java和Swift,但它还没有完全发布。相反,现在支持.NET Standard支持Xamarin个应用。

- 结束更新 -

富有表现力的工具,可在以下位置获得: GitHubNuget

该网站上有相当数量的文档,但是为了防止链接腐烂,这是一个如何使用它的示例:

可变支持

var expression = new Expression("1 * [variable]");
var result = expression.Evaluate(new Dictionary<string, object> { ["variable"] = 2);

<强>功能

var expression = new Expression("sum(1,2,3,4)");
var result = expression.Evaluate();

它的设计旨在尽可能地匹配NCalc,但它增加了对诸如“null”等内容的支持。关键字。

此答案与Expressive answer重复。在链接腐烂的情况下,我重复了它。

答案 3 :(得分:0)

晚了聚会,但是这是定期更新的,也读起来比NCalc要好:

https://www.nuget.org/packages/Jace/

希望有帮助。

答案 4 :(得分:0)

我知道这是一个非常晚的响应(晚7年)

还有一个仍在开发中的fork,可以在这里找到: https://github.com/ncalc/ncalc