標籤:style blog http color os io 資料 for
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 }View Code
方案二:
歡迎你們提供!