简介
NCalc 是一个能够进行表达式计算的一系列程序集( Assembly )。我们主要使用 Expression
类,这个类有一个函数 Evaluate()
能够计算表达式的值。表达式采用字符串形式传入。
举例:
Expression e = new Expression("2 * 3"); object result = e.Evaluate(); Console.WriteLine(result);
很简单,创建一个 Expression
对象,通过构造函数传入需要计算的表达式字符串。调用 Evaluate()
方法进行解析,得到计算结果。
大小写敏感
NCalc 默认对大小写敏感,如果想要忽略大小写,只需要添加一个参数即可,
Expression e = new Expression("aBs(-1)", EvaluateOptions.IgnoreCase) Debug.Assert(1M, e.Evaluate());
错误处理
如果表达式有语法错误,求值会抛出 EvaluationException。
try { new Expression("(3 + 2").Evaluate(); } catch(EvaluationException e) { Console.WriteLine("Error catched: " + e.Message); }
当然,我们也可以在求值之前通过 HasErrors()
函数来检测语法错误。
Expression e = new Expression("a + b * ("); if(e.HasErrors()) { Console.WriteLine(e.Error); }
表达式缓冲
一个 Expression 对象只会被编译一次。因此通过改变参数来重用表达式对象能够提高程序性能。这样每次计算就只需要遍历表达式树就好了。
实际上,每个编译过的表达式都会缓冲起来,我们完全不需要自己考虑重用表达式。
使用 CacheEnabled
可以从框架层面更改默认设置。
Expression.CacheEnabled = false;
也可以对某个特定的表达式对象进行设置
Expression e = new Expression("1 + 1", EvaluateOption.NoCache);
标签:NCalc,Console,Evaluate,笔记,学习,new,Expression,表达式 From: https://www.cnblogs.com/shijiehaiyang/p/17492773.html