小编典典

字符串运算符

c#

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


阅读 468

收藏
2020-05-19

共1个答案

小编典典

从我的角度来看,您有两个选择-使用表达式评估器或构造,即时编译和运行C#代码。

我将使用一个表达式评估程序库,因为您不必担心任何安全性问题。也就是说,您可能无法在中等信任环境(例如大多数共享托管服务器)中使用代码生成。

这是生成代码以评估表达式的示例:http :
//www.vbforums.com/showthread.php?t=397264

2020-05-19