我需要评估在C#中以字符串形式呈现给我的数学表达式。示例noddy,但获得该字符串两端的点作为表达式。
我需要评估然后填充一个int。
与其他语言一样,C#中没有Eval()。
String myString = "3*4";
编辑:
我在VS2008上
尝试了Microsoft.JScript。=不推荐使用的方法(但仍然符合-警告)
但是我正在使用的Microsoft.JScript dll在起作用
公共对象InvokeMember(字符串名称,BindingFlags invokeAttr,活页夹装订器,对象目标,对象[] args);
抱怨缺少“;” 去搞清楚…
编辑2
解决方案-是codeDom的一个-它起作用了,因为没有安全问题-只有我会运行代码。非常感谢您的答复…
而且新《龙书》的链接很棒
编辑3
Matt dataTable.Compute()也可以工作-出于对安全性的关注甚至更好。(注意检查参数)
从我的角度来看,您有两个选择-使用表达式评估器或构造,即时编译和运行C#代码。
我将使用一个表达式评估程序库,因为您不必担心任何安全性问题。也就是说,您可能无法在中等信任环境(例如大多数共享托管服务器)中使用代码生成。
这是生成代码以评估表达式的示例:http : //www.vbforums.com/showthread.php?t=397264