例如,有很多算法可以计算表达式:
是否可以使用C#.net反射或其他现代.net技术评估任何数学表达式?
除了托马斯的答案,实际上实际上可以直接从C#访问(不建议使用的)JScript库,这意味着您可以使用等效于JScript的eval
函数。
当然有可能。 CodeSnippetCompileUnit类基本上是这样做的。我给您写了一些用法示例代码。您需要包括以下名称空间:
尽管使用编译器服务是一种简单而有效的解决方案,但是如果用户输入该表达式,则会引起严重的安全性问题,因为它实际上可以执行anything
对我来说,Vici.Parser表现得非常好:check it out here,这是我到目前为止发现的最灵活的表达式解析器。
我认为这是最好的方法。 Petar Repac's answer很棒。使用DataColumn对象的'expression'参数可以轻松而轻松地解决以下主题:
您可以使用Math-Expression-Evaluator库,该库实现了我创作的Shunting Yard算法。它支持简单的表达式,例如2.5+5.9
,17.89-2.47+7.16
,5/2/2+1.5*3+4.58
,带括号(((9-6/2)*2-4)/2-6-1)/(2+24/(2+4))
的表达式和带变量的表达式:
使用新的Roslyn API动态编译代码,并将程序集加载到.net核心项目中;