例如:string h = "j==j1";
//下面的改这么写?
bool t=if(h);

解决方案 »

  1.   

    if(h)
    {
      string h = "true";
    }
      

  2.   

    if(j==j1) 

      string h = "true"; 
    }
      

  3.   

    只能动态编译
    如下可以计算表达式的值:
        /// <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;
            }
        }
      

  4.   

    例如:string h = "j==j1";//这个不是固定的
    //下面的改这么写?
    if(h)
    {}
    else
    {}//就如js的if(eval(h))
      

  5.   

    string h = "j==j1";
    h = h.Replace("j1", j1.ToString());
    h = h.Replace("j", j.ToString());
    bool t=(bool)CalcExpression.Calculate(h);