例如:string h = "j==j1";
//下面的改这么写?
bool t=if(h);
//下面的改这么写?
bool t=if(h);
解决方案 »
- 请教关于PDA GPS开发的问题,急急急急!!好心的大虾帮助。谢谢
- 【】请教达人:关于winform datagridView userControl问题?【】
- 问下一个关于委托回调和线程之间通信的问题
- 新手,没什么分,请大峡帮忙看看这个程序错哪了``谢谢
- ListView子项重绘的问题——不知道该重载哪个函数或者说消息ID是多少,请教!:)
- ◆高难问题:如何得到或控制另一窗口中的页面或对象
- 在本地IIS可以浏览的网站传到网上居然出错
- alert()为么会失效
- 微软是怎么搞的,出directx 9.0b sdk后,也不支持vs.net 2003!
- 问一个控件的combox和treeview问题,谢谢
- 如何获取一个TEXTBOX的句柄
- self.moveBy
{
string h = "true";
}
{
string h = "true";
}
如下可以计算表达式的值:
/// <summary>
/// 表达式计算类
/// </summary>
public class CalcExpression
{
/// <summary>
/// 计算表达式
/// </summary>
/// <param name="expression">表达式</param>
/// <returns>表达式计算后的值</returns>
public static object Calculate(string expression)
{
string className = "Calc";
string methodName = "Run";
expression = expression.Replace("/", "*1.0/"); // 创建编译器实例。
CSharpCodeProvider provider = CodeDomProvider.CreateProvider("C#") as CSharpCodeProvider; // 设置编译参数。
CompilerParameters paras = new CompilerParameters();
paras.GenerateExecutable = false;
paras.GenerateInMemory = true; // 创建动态代码。
StringBuilder classSource = new StringBuilder();
classSource.Append("public static class ");
classSource.Append(className);
classSource.Append("\n{\n public static object ");
classSource.Append(methodName);
classSource.Append("()\n {\n return ");
classSource.Append(expression);
classSource.Append(";\n }\n}"); // 编译代码。
CompilerResults result = provider.CompileAssemblyFromSource(paras, classSource.ToString());
if (result.Errors.Count > 0) return null; // 获取编译后的程序集。
Assembly assembly = result.CompiledAssembly; // 动态调用方法。
Type calcType = assembly.GetType(className);
MethodInfo method = calcType.GetMethod(methodName);
object reobj = method.Invoke(null, null);
GC.Collect();
return reobj;
}
}
//下面的改这么写?
if(h)
{}
else
{}//就如js的if(eval(h))
h = h.Replace("j1", j1.ToString());
h = h.Replace("j", j.ToString());
bool t=(bool)CalcExpression.Calculate(h);