C#动态执行公式运算
主要利用反射和动态编译。
示例代码:
using Microsoft.CSharp; using System; using System.CodeDom.Compiler; using System.Reflection; namespace ConsoleApp6 { internal class Program { private static void Main(string[] args) { Expression e = new Expression("x+5*9/3.2+6"); Console.WriteLine(e.Compute(10)); Console.Read(); } } public class Expression { private object instance; private MethodInfo method; /// <summary> /// 表达试运算 /// </summary> /// <param name="expression">表达试</param> public Expression(string expression) { if (expression.IndexOf("return") < 0) { expression = "return " + expression + ";"; } string className = "Expression"; string methodName = "Compute"; CompilerParameters p = new CompilerParameters(); p.GenerateInMemory = true; var source = string.Format("using System;sealed class {0}{{public double {1}(double x){{{2}}}}}", className, methodName, expression); CompilerResults cr = new CSharpCodeProvider().CompileAssemblyFromSource(p, source); if (cr.Errors.Count > 0) { string msg = "Expression(\"" + expression + "\"): \n"; foreach (CompilerError err in cr.Errors) { msg += err.ToString() + "\n"; } throw new Exception(msg); } instance = cr.CompiledAssembly.CreateInstance(className); method = instance.GetType().GetMethod(methodName); } /// <summary> /// 处理数据 /// </summary> /// <param name="x"></param> /// <returns>返回计算值</returns> public double Compute(double x) { return (double)method.Invoke(instance, new object[] { x }); } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧