首页 > 代码库 > 字符串计算表达式
字符串计算表达式
string str="4+4+2.1";
要的效果: double sum=4+4+2.1;
方案一:
动态计算表达式:
1 public class Expression 2 { 3 object instance; 4 MethodInfo method; 5 /// <summary> 6 /// 表达试运算 7 /// </summary> 8 /// <param name="expression">表达试</param> 9 public Expression(string expression)10 {11 if (expression.IndexOf("return") < 0) expression = "return " + expression + ";";12 string className = "Expression";13 string methodName = "Compute";14 CompilerParameters p = new CompilerParameters();15 p.GenerateInMemory = true;16 CompilerResults cr = new CSharpCodeProvider().CompileAssemblyFromSource(p, string.17 Format("using System;sealed class {0}{{public double {1}(double x){{{2}}}}}",18 className, methodName, expression));19 if (cr.Errors.Count > 0)20 {21 string msg = "Expression(\"" + expression + "\"): \n";22 foreach (CompilerError err in cr.Errors) msg += err.ToString() + "\n";23 throw new Exception(msg);24 }25 instance = cr.CompiledAssembly.CreateInstance(className);26 method = instance.GetType().GetMethod(methodName);27 }28 /// <summary>29 /// 处理数据30 /// </summary>31 /// <param name="x"></param>32 /// <returns>返回计算值</returns>33 public double Compute(double x)34 {35 return (double)method.Invoke(instance, new object[] { x });36 }
方案二:
欢迎你们提供!
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。