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

推荐订阅源

C
Check Point Blog
Y
Y Combinator Blog
GbyAI
GbyAI
Microsoft Azure Blog
Microsoft Azure Blog
Martin Fowler
Martin Fowler
博客园_首页
大猫的无限游戏
大猫的无限游戏
美团技术团队
S
SegmentFault 最新的问题
T
The Blog of Author Tim Ferriss
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
MyScale Blog
MyScale Blog
小众软件
小众软件
Vercel News
Vercel News
阮一峰的网络日志
阮一峰的网络日志
N
Netflix TechBlog - Medium
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
量子位
博客园 - 【当耐特】
J
Java Code Geeks
F
Fortinet All Blogs
宝玉的分享
宝玉的分享
Stack Overflow Blog
Stack Overflow Blog
博客园 - 司徒正美

博客园 - leon qian

正则表达式全部符号解释 android显示大图片的一些技巧 SAPI 5.1 语音合成的事件 SAPI 5.1 语音合成的列举语音引擎 Unicode符号代码表 c#中的问号 读取Excel文件时出现null的解决方法 - leon qian - 博客园 让CSS区别不同浏览器 在Repeater中使用按钮或其他控件的解决方法 - leon qian - 博客园 在IIS中使用Gzip压缩后传送数据 一堆常用JS代码 stream转string,string转stream 一个XML转换的例子 JS代码整理 asp.net 真正意义上的裁减图片 由于启动用户实例的进程时出错的解决方法 C#中的正则表达式 转 SqlHelper详解(转载) [转].net用url重写URLReWriter实现任意二级域名
C#的四则运算函数 - leon qian - 博客园
leon qian · 2008-10-04 · via 博客园 - leon qian

调用:Evaluator.EvalToDouble("(512+100)/300");  
   
  using   System;  
  using   System.CodeDom.Compiler;  
  using   System.Reflection;  
  using   Microsoft.JScript;  
   
  namespace   mysoft  
  {  
        public   class   Evaluator  
        {  
              public   static   int   EvalToInteger(string   statement)  
              {  
                    string   s   =   EvalToString(statement);  
                    return   int.Parse(s.ToString());  
              }  
   
              public   static   double   EvalToDouble(string   statement)  
              {  
                    string   s   =   EvalToString(statement);  
                    return   double.Parse(s);  
              }  
   
              public   static   string   EvalToString(string   statement)  
              {  
                    object   o   =   EvalToObject(statement);  
                    return   o.ToString();  
              }  
   
              public   static   object   EvalToObject(string   statement)  
              {  
                    return   _evaluatorType.InvokeMember(  
                                            "Eval",    
                                            BindingFlags.InvokeMethod,    
                                            null,    
                                            _evaluator,    
                                            new   object[]   {   statement   }    
                                      );  
              }  
                                 
              static   Evaluator()  
              {  
                    ICodeCompiler   compiler;  
                    compiler   =   new   JScriptCodeProvider().CreateCompiler();  
   
                    CompilerParameters   parameters;  
                    parameters   =   new   CompilerParameters();  
                    parameters.GenerateInMemory   =   true;  
                     
                    CompilerResults   results;  
                    results   =   compiler.CompileAssemblyFromSource(parameters,   _jscriptSource);  
   
                    Assembly   assembly   =   results.CompiledAssembly;  
                    _evaluatorType   =   assembly.GetType("Evaluator.Evaluator");  
                     
                    _evaluator   =   Activator.CreateInstance(_evaluatorType);  
              }  
               
              private   static   object   _evaluator   =   null;  
              private   static   Type   _evaluatorType   =   null;  
              private   static   readonly   string   _jscriptSource   =    
                     
                      @"package   Evaluator  
                          {  
                                class   Evaluator  
                                {  
                                      public   function   Eval(expr   :   String)   :   String    
                                      {    
                                            return   eval(expr);    
                                      }  
                                }  
                          }";  
        }  
  }  

posted @ 2008-10-04 21:04  leon qian  阅读(2230)  评论()    收藏  举报