惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Apple Machine Learning Research
Apple Machine Learning Research
Y
Y Combinator Blog
博客园 - 【当耐特】
V
Visual Studio Blog
GbyAI
GbyAI
V
V2EX
P
Proofpoint News Feed
Microsoft Azure Blog
Microsoft Azure Blog
Microsoft Security Blog
Microsoft Security Blog
D
DataBreaches.Net
Hugging Face - Blog
Hugging Face - Blog
A
About on SuperTechFans
The Cloudflare Blog
阮一峰的网络日志
阮一峰的网络日志
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
N
Netflix TechBlog - Medium
aimingoo的专栏
aimingoo的专栏
B
Blog RSS Feed
量子位
MongoDB | Blog
MongoDB | Blog
有赞技术团队
有赞技术团队
人人都是产品经理
人人都是产品经理
Stack Overflow Blog
Stack Overflow Blog
小众软件
小众软件

博客园 - chinaprg

干不下去了,准备出售公司了,有想要接手的吗 如何在3周让你的工资从5000+变10000+ 时隔6年后,我又回到博客园了 delphi关于小数位精度的问题 TExcelApplication,TExcelWorksheet,TExcelWorkbook用法 在客户处实施时几条常用运行命令备忘 堕落于游戏中的朋友可以看看了,打游戏偶尔还能搞点零花钱 路在何方 在b/s开发中经常用到的javaScript技术 C#中对注册表的操作 用C#实现生成PDF文档 C#在客戶端和服務端操作Excel文件 - chinaprg - 博客园 用C# 实现C/S模式下软件自动在线升级[转载,原作者:貓撲] 关于C#下写的Web Service 服务在Delphi下调用时的问题 用C#快速往Excel写数据 - chinaprg - 博客园 asp.net中Dbgrid更新和取消 命令同时出现的操作DEMO说明 - chinaprg - 博客园 常用javascript 常用javascript 网上看到的一篇颇有感触的文章,特意推荐给大家看看!
c# 公式计算问题 转帖(http://topic.csdn.net/t/20060313/11...
chinaprg · 2007-02-24 · via 博客园 - chinaprg

 using   System;  
  using   System.CodeDom.Compiler;  
  using   System.Reflection;  
  using   System.Text;  
  using   Microsoft.CSharp;  
   
  namespace   Expression  
  {  
          ///   <summary>  
          ///   计算表达式的类  
          ///   </summary>  
          public   class   CalculateExpression  
          {  
                  ///   <summary>  
                  ///   接受一个string类型的表达式并计算结果,返回一个object对象,静态方法  
                  ///   </summary>  
                  ///   <param   name="expression"></param>  
                  ///   <returns></returns>  
                  public   static   object   Calculate(string   expression)  
                  {  
                          string   className   =   "Calc";  
                          string   methodName   =   "Run";  
                          expression   =   expression.Replace("/",   "*1.0/");  
   
                          //   创建编译器实例。    
                          ICodeCompiler   complier   =   (new   CSharpCodeProvider().CreateCompiler());  
   
                          //   设置编译参数。    
                          CompilerParameters   paras   =   new   CompilerParameters();  
                          paras.GenerateExecutable   =   false;  
                          paras.GenerateInMemory   =   true;  
   
                          //   创建动态代码。    
                          StringBuilder   classSource   =   new   StringBuilder();  
                          classSource.Append("public   class   "   +   className   +   "\n");  
                          classSource.Append("{\n");  
                          classSource.Append("         public   object   "   +   methodName   +   "()\n");  
                          classSource.Append("         {\n");  
                          classSource.Append("                 return   "   +   expression   +   ";\n");  
                          classSource.Append("         }\n");  
                          classSource.Append("}");  
   
                          //   编译代码。    
                          CompilerResults   result   =   complier.CompileAssemblyFromSource(paras,   classSource.ToString());  
   
                          //   获取编译后的程序集。    
                          Assembly   assembly   =   result.CompiledAssembly;  
   
                          //   动态调用方法。    
                          object   eval   =   assembly.CreateInstance(className);  
                          MethodInfo   method   =   eval.GetType().GetMethod(methodName);  
                          object   reobj   =   method.Invoke(eval,   null);  
                          GC.Collect();  
                          return   reobj;  
                  }  
          }  
  }  

posted on 2007-02-24 10:49  chinaprg  阅读(1566)  评论()    收藏  举报