public static void TestComput(string expression)
{
//要编译的代码段
string code = @"public class TestCompute
{public static object Compute()
{return @exp;}}";
code = code.Replace("@exp", expression);
CSharpCodeProvider csharpCodeProvider = new CSharpCodeProvider();
CompilerParameters compilerParameters = new CompilerParameters();
//compilerParameters.CompilerOptions = "/t:library";
//compilerParameters.GenerateInMemory = true;
//开始编译
CompilerResults compilerResults = csharpCodeProvider.CompileAssemblyFromSource(compilerParameters, code);
if (compilerResults.Errors.Count > 0)
throw new Exception("编译出错!");
Assembly assembly = compilerResults.CompiledAssembly;
Type type = assembly.GetType("TestCompute");
//使用动态编译计算表达式
object obj = type.GetMethod("Compute").Invoke(null, null);
//使用DataTable的Compute也可以计算一些简单的表达式
DataTable dt = new DataTable();
obj = dt.Compute(expression, null);
}C# 动态计算表达式的值--动态编译和DataTable.Compute()
最新推荐文章于 2025-10-12 20:34:02 发布
本文介绍了一种通过动态编译技术来计算字符串表达式的方法。该方法首先将表达式嵌入到C#代码中,然后利用C#编译器进行编译,如果编译成功,则运行编译后的代码来获取表达式的计算结果。此外,还介绍了另一种利用DataTable的Compute方法计算简单表达式的方式。
684

被折叠的 条评论
为什么被折叠?



