我尝试将部分代码从VBScript转换为C#。 我有以下几行:
string replacementMatch = ....;
...
replacementMatch = Eval(replacementMatch);
OR
Execute(replacementMatch);
我找不到C#中的等价物。
答案 0 :(得分:4)
Eval函数计算表达式并返回结果。您将找不到静态类型语言(如C#和VB.NET)中的等效语言。有些库提供了诸如flee之类的功能。
答案 1 :(得分:0)
您找不到完全相同的功能,但您可以使用CodeDomProvider
从生成的代码编译程序集,并使用Reflection
从中调用方法。
答案 2 :(得分:0)
您可以添加对Microsoft Script Control
的引用,并在c#中调用其Eval函数。
看到这个答案。
How can I evaluate the result of a boolean expression in string format on runtime in C#?
答案 3 :(得分:0)
你找不到同等的东西。您可以使用C#编译器,但在您的应用程序中执行任意代码绝不是一个好主意。考虑您的要求,看看编写一个简单的解析器是否可行。在这种情况下,请查看System.Linq.Expressions。
答案 4 :(得分:0)
在文档VBScript中,您可以发现“Eval”和“Execute”参数被评估为“作为VBScript表达式”。所以简而言之,没有C#等价物。
通常,您应该查看vb代码并考虑在C#中重写它,以便不需要在运行时评估脚本。
如果你真的需要在运行时创建语句并对它们进行评估,你可以试试第三方工具 - 比如“http://www.codeproject.com/KB/dotnet/evaluator.aspx”(尽管我没有用过)这个特殊的工具 - 在真正需要时我可以看到很少的情况。)