当前位置: 首页 > 编程语言 > C#

使用MicrosoftScriptingControl计算“If”表达式(viac#)Share

时间:2023-04-10 12:56:06 C#

使用MicrosoftScriptingControl计算“If”表达式(viac#):使用MSScriptControl;//引用msscript.ocxScriptControlClasssc=newScriptControlClass();sc.Language="VBScript";sc.AllowUI=true;尝试{Console.WriteLine(sc.Eval(txtEx.Text).ToString());}catch(Exceptionex){Console.WriteLine(ex.Message);}(txtEx是一个简单的文本字段)数值表达式:“6+4”、“cos(34)”、“abs(-99)”、“round(1.234,2)”等都是很好的布尔表达式:“trueorfalse","1=2"很好,但我如何评估一个简单的"if"?我尝试了“if(true,2,3)”、“iif(true,2,3)”、“if(true)thenelse3”和“if(true)thenelse3endif”有人可以帮忙吗我评估简单的条件表达式?任何帮助是极大的赞赏!RHTrywrappingtheIFexpressioninafunctionFunctiontestif(true)thenreturntrueelsereturnfalseendifEndfunction将函数添加到控件中,然后使用RunResult=ScriptControl.Run("Test")(上面的代码未测试,但这样的事情应该有效)查看此链接以获取更多信息http://support.microsoft.com/kb/184740您应该考虑使用Fou,它是WindowsWorkflow的一部分ndation的表达式求值引擎Evaluator和Designer可以和WF分开使用。if(true)thenreturn2elsereturn3usingMSScriptControl;//引用msscript.ocxScriptControlClasssc=newScriptControlClass();sc.Language="VBScript";sc.AllowUI=true;//VBScript引擎没有IIf函数//将包装器IIF函数添加到脚本控件。//此IIF函数将像VB6IIf函数一样工作。sc.AddCode(@"FunctionIIF(Expression,TruePart,FalsePart)IfExpressionThenIIF=TruePartElseIIF=FalsePartEndIFEndFunction");try{//定义x,y变量值sc.AddCode(@"x=5y=6");//测试我们的IIFConsole.WriteLine(sc.Eval("IIF(x>y,x,y)").ToString());}catch(Exceptionex){Console.WriteLine(ex.Message);}谢谢你的提示!经过一些实验,根据Brummo的帮助,这似乎可行:txtEx包含以下文本:functiontestif(1=1)thentest=trueelsetest=falseendifendfunctionthensc.AddCode(txtEx.Text);和对象[]myParams={};Console.WriteLine(sc.Run("Test",refmyParams).ToString());这并不理想,因为我真的想在不构建、加载和评估函数的情况下评估表达式。(令我惊讶的是,如果进行评估,IIF不适用于简单的一行)。以上就是C#学习教程的全部内容:使用MicrosoftScriptingControl对'If'表达式求值(viac#)。收藏不代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: