世界焦点!NCalc 学习笔记 (六)


(资料图片)

参数

静态参数

静态参数可以在表达式求值前定义。用方括号括起来表示为静态参数。可以通过 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 学习笔记 (六)

参数静态参数静态参数可以在表达式求值前定义。用方括号括起来表示为静

来源:博客园2023-06-20

鹅鸭杀雪王透视穿墙无CD多功能助手 天天观察

鹅鸭杀雪王透视穿墙无CD多功能助手下载地址:https: www kunkunwu com post 74 html

来源:哔哩哔哩2023-06-20

解禁刚两天 大股东就减持198万股 海创药业何时扭亏?

《电鳗财经》文 米莱在股份解禁仅两天后,海创药业(688302 SH)的大股东

来源:赢家财富网2023-06-20

兵发星空下 暗夜砺剑锋!各部队积极组织开展夜训活动-世界微头条

本期聚焦:夜间训练兵发星空下 暗夜砺剑锋夜战,是我军传统优势。在我

来源:中国军网-解放军报2023-06-20

著作权职务作品的认定是怎么样的?_全球快讯

一、著作权职务作品的认定是怎么样的?认定职务作品方法一:创作作品是

来源:法问网2023-06-20

黑客索要450万美元、回滚旧API 威胁Reddit要公开80GB数据 今日快讯

IT之家6月20日消息,海外最大“贴吧”网站Reddit于今年2月遭到网络攻击

来源:凤凰网2023-06-20

增加耕地不能做表面文章

一段时间以来,一些地方在增加耕地面积时,存在不顾实际,拔苗砍树“一

来源:经济日报2023-06-20

虽无开门红升势犹可期-世界观热点

2023年6月19日星期一大盘低开2点以3271点开盘,这也成为全天最高点,随

来源:梁祝2023-06-20