猿问

字符串运算符

我需要评估在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()也可以工作-出于对安全性的关注甚至更好。(注意检查参数)


繁星淼淼
浏览 383回答 3
3回答

缥缈止盈

从我的角度来看,您有两个选择-使用表达式评估器或构造,即时编译和运行C#代码。我将使用一个表达式评估程序库,因为您不必担心任何安全性问题。也就是说,您可能无法在中等信任环境(例如大多数共享托管服务器)中使用代码生成。这是生成代码以评估表达式的示例:http : //www.vbforums.com/showthread.php?t=397264

慕盖茨4494581

所有其他答案都可能是过度杀伤力。如果您只需要简单的算术,请执行此操作。        DataTable dummy = new DataTable();        Console.WriteLine(dummy.Compute("15 / 3",string.Empty));编辑:更多信息。请查阅MSDN文档中该类的Expression属性System.Data.DataColumn。“表达式语法”中的内容概述了除算术运算符之外还可以使用的命令列表。(例如IIF,LEN等)。感谢大家投票支持我的第一个发布的答案!
随时随地看视频慕课网APP
我要回答