给出一个表达式以及表达式里面所有变量的值。求出这个表达式的值。类似javascript中的Eval().
2005-12-23 16:18
741 查看
给出一个表达式以及表达式里面所有变量的值。求出这个表达式的值。类似javascript中的Eval().
作者:timmy3310<!--
google_ad_client = "pub-0523096416305353";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as_rimg";
google_cpa_choice = "CAAQycb8zwEaCNrmdvgKt1bFKJnA93M";
//-->
Runtime C# Expression Evaluator http://www.codeproject.com/csharp/runtime_eval.asp ---------------------------------------------------------------
http://expert.csdn.net/Expert/topic/1553/1553098.xml?temp=.1884882
请参考
这个帖子里面有我写的一个表达式解析类
---------------------------------------------------------------
using System;
using System.CodeDom;
using System.CodeDom.Compiler;
using Microsoft.CSharp;
using System.Reflection;
using System.Text;
namespace TestApp
{
public class Test
{
public static void Main()
{
string expression = "125.8 + 208.2 + 120.90";
string ret = Eval.Calc(expression).ToString();
Console.Write("{0} = {1} ",expression, ret);
}
}
public class Eval
{
public static object Calc(string expression)
{
string className = "Calc";
string methodName = "Run";
// 创建编译器实例。
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("}");
System.Diagnostics.Debug.WriteLine(classSource.ToString());
// 编译代码。
CompilerResults result = complier.CompileAssemblyFromSource(paras, classSource.ToString());
// 获取编译后的程序集。
Assembly assembly = result.CompiledAssembly;
// 动态调用方法。
object eval = assembly.CreateInstance(className);
MethodInfo method = eval.GetType().GetMethod(methodName);
return method.Invoke(eval, null);
}
}
}
相关文章推荐
- ACM273 给你一个乱序的字符串,里面包含有小写字母(a--z)以及一些特殊符号,请你找出所给字符串里面所有的小写字母的个数, 拿这个数对26取余,输出取余后的数字在子母表中对应的小写字母(0对应z
- 给定一颗二叉树,以及其中的两个node(地址均非空),要求给出这两个node的一个公共父节点,使得这个父节点与两个节点的路径之和最小。
- 给出一个名字,该名字有26个字符串组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。
- JavaScript中全局变量、函数内变量以及常量表达式的效率测试
- eclipse中双击一个变量,文件中所有这个变量都会变成黄色,现在变不了了的问题
- 传入一个数组,输出这个数组里面的所有排列
- 给出一个set的字符和一个正数k,求所有由这个set能组成长度为k的字符串集合 print-all-combinations-of-given-length
- javascript中怎么判断某变量是null,undefined,还是不存这个变量 ? 以及变量是array 还是 object 还是 null ?
- 一个典型的例子理解JavaScript作用域以及变量提升
- 给出一个名字,该名字有26个字符串组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。
- 实现一个无锁的Stack,并写一段测试代码(多线程访问),证明这个Stack是线程安全的。给出程序以及运行的截图。
- c#中实现类似js的Eval|.NET中执行Javascript(表达式是字符串的计算)
- 【代码提取】提取一个文件夹里面的所有Java文件的类名函数名和变量名
- 为什么我使用source /etc/profile这个命令之后,新的环境变量只能在一个终端里面有效? 为什么我使用source /etc/profile这个命令之后,新的环境变量只能在一个终端里
- JavaScript中全局变量、函数内变量以及常量表达式的效率测试
- 一个袋子里面有n个球,每个球上面都有一个号码(拥有相同号码的球是无区别的)。如果一个袋子是幸运的当且仅当所有球的号码的和大于所有球的号码的积。 例如:如果袋子里面的球的号码是{1, 1, 2, 3},这个袋子就是幸运的,因为1 + 1 + 2 + 3 > 1 * 1 * 2 * 3 你可以适当从袋子里移除一些球(可以移除0个,但是别移除完),要使移除后的袋子是幸运的。现在让你编程计算一下你可以获得
- 找出自己应用程序里面所有的中文字符串,替换为字符串变量,并将所有字符串放到一个文本文件中。
- java进阶之反射:反射基础之如何获取一个类以及如何获取这个类的所有属性和方法(2)
- jQuery的函数,有些直接就用$this(表示当前操作的标签),而也不见this在哪里定义过,这个this究竟谁什么?答:把this当成在内从中存在的JavaScript的一个变量即可,一个关键字
- 快速查找素数 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 现在给你一个正整数N,要你快速的找出在2.....N这些数里面所有的素数。 输入 给出一个正整数数N(N<=