我需要评估在C#中以字符串形式呈现给我的数学表达式。示例noddy,但获得该字符串两端的点作为表达式。我需要评估然后填充一个int。与其他语言一样,C#中没有Eval()。String myString = "3*4";编辑:我在VS2008上尝试了Microsoft.JScript。=不推荐使用的方法(但仍然符合-警告)但是我正在使用的Microsoft.JScript dll在起作用公共对象InvokeMember(字符串名称,BindingFlags invokeAttr,活页夹装订器,对象目标,对象[] args);抱怨缺少“;” 去搞清楚...编辑2解决方案-是codeDom的一个-它起作用了,因为没有安全问题-只有我会运行代码。非常感谢您的答复...而且新《龙书》的链接很棒编辑3Matt dataTable.Compute()也可以工作-出于对安全性的关注甚至更好。(注意检查参数)
3 回答
缥缈止盈
TA贡献2041条经验 获得超4个赞
从我的角度来看,您有两个选择-使用表达式评估器或构造,即时编译和运行C#代码。
我将使用一个表达式评估程序库,因为您不必担心任何安全性问题。也就是说,您可能无法在中等信任环境(例如大多数共享托管服务器)中使用代码生成。
这是生成代码以评估表达式的示例:http : //www.vbforums.com/showthread.php?t=397264
慕盖茨4494581
TA贡献1850条经验 获得超11个赞
所有其他答案都可能是过度杀伤力。
如果您只需要简单的算术,请执行此操作。
DataTable dummy = new DataTable();
Console.WriteLine(dummy.Compute("15 / 3",string.Empty));
编辑:更多信息。请查阅MSDN文档中该类的Expression属性System.Data.DataColumn。“表达式语法”中的内容概述了除算术运算符之外还可以使用的命令列表。(例如IIF,LEN等)。感谢大家投票支持我的第一个发布的答案!
- 3 回答
- 0 关注
- 382 浏览
添加回答
举报
0/150
提交
取消