Equivalent VBs -> C# : Eval and Execute

本文关键字:Eval and Execute VBs gt Equivalent | 更新日期: 2023-09-27 18:14:24

我尝试将一部分代码从VBScript转换为c#。我有这些行:

string replacementMatch = ....;

replacementMatch = Eval(replacementMatch);

Execute(replacementMatch);

Equivalent VBs -> C# : Eval and Execute

Eval函数计算表达式并返回结果。在c#和VB.NET等静态类型语言中找不到等效的。有一些库提供了这样的功能,如escape .

您无法找到完全相同的功能,但您可以使用CodeDomProvider从生成的代码编译程序集,并使用Reflection从中调用方法。

您可以在c#中添加Microsoft Script Control的引用并调用其Eval函数。请看这个答案

如何在c#运行时评估字符串格式的布尔表达式的结果?

您将找不到等效的。您可以使用c#编译器,但在应用程序中执行任意代码绝不是一个好主意。考虑您的需求,看看编写一个简单的解析器是否可行。查看System.Linq.Expressions

在VBScript文档中,你可以发现"Eval"answers"Execute"参数被评估为"作为VBScript表达式"。所以简而言之,没有c#的等价物。

一般来说,你应该回顾一下vb代码,并考虑用c#重写它,这样就不需要在运行时评估脚本了。

如果您确实需要在运行时创建语句并对其求值,您可以尝试第三方工具-如"http://www.codeproject.com/KB/dotnet/evaluator.aspx"(尽管我没有使用这个特定的工具-我可以看到很少有情况下,当这是真正需要的)。