NCalc is a fast and lightweight expression evaluator library for .NET, designed for flexibility and high performance. It supports a wide range of mathematical and logical operations.
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 6 天前 | ||
| 6 天前 | ||
| 6 天前 | ||
| 1 天前 | ||
| 1 天前 | ||
| 1 年前 | ||
| 6 天前 | ||
| 2 年前 | ||
| 25 天前 | ||
| 1 天前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 6 个月前 | ||
| 8 年前 | ||
| 1 年前 | ||
| 6 天前 | ||
| 2 年前 | ||
| 6 天前 | ||
| 14 天前 | ||
| 2 个月前 | ||
| 1 天前 |
NCalc
NCalc 是一款适用于 .NET 的快速、轻量级表达式计算库。它能够解析并计算包含文本、运算符、参数、内置函数及自定义函数的数学和逻辑表达式。
NCalc 支持现代 .NET、.NET Standard 2.0 以及 .NET Framework 4.8。
想先体验一下吗?打开 NCalc 在线 playground,即可在浏览器中直接运行表达式,由 Blazor WASM 提供支持。
文档
完整的语言参考、运行时选项、插件及 API 参考,请从 NCalc 文档 开始了解。
常用入口点:
安装
如需使用表达式引擎,请安装 NCalc:
dotnet add package NCalc
Important
NCalc、NCalcSync 和 NCalcAsync 均为重定向包,目前直接指向 NCalc.Core,以保持社区工作整合到同一存储库之前的兼容性。
仅在需要时添加可选包:
dotnet add package NCalc.LambdaCompilation
dotnet add package NCalc.DependencyInjection
快速示例
计算表达式
using NCalc;
var result = new Expression("2 + 3 * 5").Evaluate();
// 17
使用参数
var expression = new Expression("Round(Pow([x], 2) + [offset], 2)");
expression.Parameters["x"] = 3.14;
expression.Parameters["offset"] = 10;
var result = expression.Evaluate();
// 19.86
添加自定义函数
var expression = new Expression("SecretOperation(3, 6)");
expression.Functions["SecretOperation"] = args =>
(int)args.Evaluate(0) + (int)args.Evaluate(1);
var result = expression.Evaluate();
// 9
编译为 lambda
请先安装 NCalc.LambdaCompilation。
using NCalc.LambdaCompilation;
var expression = new Expression("1 + 2");
Func<int> function = expression.ToLambda<int>();
var result = function();
// 3
关于数据类型、运算符、内置函数、异步计算、缓存、表达式序列化以及高级配置,请查看 文档。
帮助
如遇错误或使用问题,请提交 issue。请包含表达式、预期结果、实际结果以及您使用的 NCalc 版本。
了解更多
相关项目
| 项目 | 描述 |
|---|---|
| FastExpressionCompiler | C# 表达式树的快速编译器。NCalc 使用它进行 lambda 编译。 |
| Jint | .NET 的 JavaScript 解释器,由 NCalc 的原作者 Sebastien Ros 开发。 |
| JJMasterData | 运行时表单生成器,使用 NCalc 实现字段可见性和其他动态行为。 |
| NCalc101 | 用于试用 NCalc 表达式的 Web 应用程序,由 Panoramic Data 开发。 |
| NCalcJS | NCalc 的 TypeScript/JavaScript 移植版。 |
| PanoramicData.NCalcExtensions | NCalc 的扩展函数,包括字符串函数、switch、if、in、typeOf 和 cast。 |
| Parlot | 由 Sebastien Ros 开发的快速轻量级解析器创建工具。NCalc 在其默认解析器中使用 Parlot。 |
正在使用 NCalc?创建一个 PR 并将您的项目添加到这里!
版本控制
NCalc 使用 Nerdbank.GitVersioning。每个库构建都可追溯到原始的 git 提交。更多信息请参阅 发布文档。