参数
静态参数
静态参数可以在表达式求值前定义。用方括号括起来表示为静态参数。
可以通过 Expression 对象中名为 Parameters
的字典来访问静态参数。
Expression e = new Expression("2 * [x] ^ 2 + 5 * [y]"); e.Parameters["x"] = 5; e.Parameters["y"] = 1; Console.WriteLine(e.Evaluate());
参数十分有用,有些编译时不知道的值可以在运行时再进行赋值。或者在性能显得十分重要时,可以用参数来保存中间结果。
表达式参数
一个表达式可以由多个表达式通过表达式参数连接起来。简单来说就是把表达式当参数用。
Expression volume = new Expression("[surface] * h"); Expression surface = new Expression("[l] * [L]"); volume.Parameters["surface"] = surface; surface.Parameters["l"] = 1; surface.Parameters["L"] = 2;
动态参数
有的时候参数可能很复杂而需要用一个专用的方法来进行求值。我们可以使用 Expression 对象提供的 EvaluateParameter
事件。这样,当某个参数无法再字典中找到时,NCalc 就会尝试调用 EvaluateParameter
事件来解决这个问题。
方括号参数
用方括号括起来的参数可以支持 ,
.
,并且支持数字开头的参数。
Expression e = new Expression("[1My First Parameter] + [2My Second Parameter]");
多值参数
如果参数是 IEnumerable
类型,并且使用了 EvaluationOptions.IterateParameters
选项,那么求值结果是一个 IList
类型的对象。
Expression e = new Expression("(a * b) ^ c", EvaluateOptions.IterateParameters); e.Parameters["a"] = new int[] { 1, 2, 3, 4, 5 }; e.Parameters["b"] = new int[] { 6, 7, 8, 9, 0 }; e.Parameters["c"] = 3; foreach (var result in (IEnumerable)e.Evaluate()) { Console.WriteLine(result); } // 5 // 13 // 27 // 39 // 3
注: ^
并不是幂乘符号,它代表的是异或。
参考链接
NCalc - Mathematical Expressions Evaluator for .NET
标签:NCalc,Parameters,笔记,学习,参数,surface,new,Expression,表达式 From: https://www.cnblogs.com/shijiehaiyang/p/17492802.html