有很多算法可以计算表达式,例如:通过递归下降调车场算法波兰语反符号是否可以使用C#.net反射或其他现代.net技术评估任何数学表达式?
3 回答
jeck猫
TA贡献1909条经验 获得超7个赞
尽管使用编译器服务是一种简单而有效的解决方案,但是如果用户输入该表达式,则会引起严重的安全问题,因为它实际上可以执行任何操作。
还有另一个非常简单的解决方案,它更安全:利用JScript Eval函数。您只需要按照以下步骤操作:
创建一个名为JsMath.js的js文件:
class JsMath
{
static function Eval(expression : String) : double
{
return eval(expression);
};
}
编译成一个类库:
jsc /t:library JsMath.js
在您的C#项目中引用JsMath库,并像这样使用它:
double result = JsMath.Eval(expression);
- 3 回答
- 0 关注
- 435 浏览
添加回答
举报
0/150
提交
取消