C# 字符串计算表达式
C# 字符串计算表达式
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 }
方案二:
欢迎你们提供!
C# 字符串计算表达式的更多相关文章
- 异常:Data = 由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值。
做项目的时候,将DataTable序列化成Json,通过ashx向前台返回数据的时候,前台总是获取不到数据,但是程序运行却没问题, 没抛出异常.一时找不到办法,减小输出的数据量,这时前台可以接收到页面 ...
- 算法笔试题整理——升级蓄水池 && 字符串数字表达式计算值 && 求旅游完所有景点需要的最少天数 && 宝箱怪
1. 小米笔试题——升级蓄水池 题目描述: 在米兔生活的二维世界中,建造蓄水池非常简单. 一个蓄水池可以用n个坐标轴上的非负整数表示,代表区间为[0-n]范围内宽度为1的墙壁的高度. 如下图1,黑色部 ...
- 【.NET】由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值。
前言 上段时间做项目时,遇到如题之类问题,如今过去有一段时间了,具体出现的情形忘了,当时虽然找到了解决方法,但是依旧没有弄明白出现此种情况是何种原因,后来在微软的帮助支持中心找到了答案,特此记录,以防 ...
- 【转】C# 将字符串或表达式直接转为可执行代码的办法
C# 将字符串或表达式直接转为可执行代码的办法 反射类 using System; using System.Data; using System.Configuration; using Syste ...
- Java集合框架练习-计算表达式的值
最近在看<算法>这本书,正好看到一个计算表达式的问题,于是就打算写一下,也正好熟悉一下Java集合框架的使用,大致测试了一下,没啥问题. import java.util.*; /* * ...
- setTimeout 方法用于在指定的毫秒数后调用函数或计算表达式
setTimeout 方法用于在指定的毫秒数后调用函数或计算表达式
- Asp.Net异常:"由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值"的解决方法
今天项目中碰到一个以前从没有见过的异常信息“由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值”,于是查了一下资料,原来此异常是由于我在代码中使用了"Response.End ...
- PHP学习之-1.4 计算表达式
计算表达式 不同于HTML和CSS,在PHP中做计算,比如我们写 echo 12*3 计算结果是36.代码如下 <?php echo 12*3;?> 实例 <!DOCTYPE HTM ...
- poj3295 Tautology , 计算表达式的值
给你一个表达式,其包括一些0,1变量和一些逻辑运算法,让你推断其是否为永真式. 计算表达式的经常使用两种方法:1.递归: 2.利用栈. code(递归实现) #include <cstdio&g ...
随机推荐
- 【CentOS 6.5】 U盘安装以及桌面空白问题
在研华ARK-5260上安装CentOS 6.5 下载CentOS-6.5-x86_64-bin-DVD1.iso 附上百度网盘下载地址:http://pan.baidu.com/s/1eQf1Eeu ...
- Cannot install ubuntu or other linux flavours on citrix Xen server
Citrix Xen sucks! When u try to install linux stuff on its Xen servers, u will get an error complain ...
- UVA - 11478 Halum 二分+差分约束
题目链接: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=34651 题意: 给定一个有向图,每一条边都有一个权值,每次你可以 ...
- bnuoj 34985 Elegant String DP+矩阵快速幂
题目链接:http://acm.bnu.edu.cn/bnuoj/problem_show.php?pid=34985 We define a kind of strings as elegant s ...
- 利用WiFi钓鱼法追邻居漂亮妹纸
假设,你的邻居是一个妹纸.漂亮单身,你,技术狗,家穷人丑,集体户口.像借酱油这种老套搭讪方式的成功率对你来说实在很低. 你要做的是了解她,然后接近她.通过搜集更多的情报,为创造机会提供帮助. 初级情报 ...
- jetty启动报错Unsupported major.minor version 51.0
主要是JDK版本的问题,需要将Eclipse的Jdk版本设置为1.7的才可以,编译级别也设置为1.7,然后删除maven项目路径,D:\WORK\workspace\xxx\target下的所有文件, ...
- 寒假222_codeforces 290 div 2 D
序号5: 想了很久的DP ,应该很简单,但是.. 题目直接转化为求n个数中选一些数GCD=1且花费最小 数比较大 map HASH 还有一点 我们知道 GCD(X,X*Y)==X; 所以我的代码里不 ...
- 1303: [CQOI2009]中位数图
早起一AC,整天萌萌哒. Problem: 1303 User: forgot93 Language: C++ Result: Accepted Time:56 ms Memory:2108 kb * ...
- ftp命令和scp命令
ftp命令: 服务器有安装ftp Server,另外一台linux可以使用ftp的client程序来进行文件的拷贝读取和下载. 1. 连接ftp服务器 格式:ftp [hostname| ip-ad ...
- rpc 小例子
RpcFramework /* * Copyright 2011 Alibaba.com All right reserved. This software is the * confidential ...