C# 如何将包含局部变量名的字符串计算为C中的代码#
我需要一个函数将字符串的值作为C#代码进行求值。字符串包含局部变量和算术运算,函数的工作方式就好像字符串是位于同一位置的代码一样。比如:C# 如何将包含局部变量名的字符串计算为C中的代码#,c#,C#,我需要一个函数将字符串的值作为C#代码进行求值。字符串包含局部变量和算术运算,函数的工作方式就好像字符串是位于同一位置的代码一样。比如: int a = ...; int b = ...; int c = ...; ... int result = Eval("a+b+c"); // should return current value a+b+c 我们可以将讨论限制在简单的类型上,比如int和它们之间的算术运算。在C#/.Net中可以这样做吗?可以将上下文参数传递给函数,例如,包含所有必需
int a = ...; int b = ...; int c = ...;
...
int result = Eval("a+b+c"); // should return current value a+b+c
我们可以将讨论限制在简单的类型上,比如int和它们之间的算术运算。在C#/.Net中可以这样做吗?可以将上下文参数传递给函数,例如,包含所有必需变量的名称和值
谢谢 声明和初始化变量的前置脚本。例如,如果希望将名为
a
的变量传递到脚本中,请执行以下操作:
var script = string.Format("var a = {0}\r\n", a) + script;
var result = Eval(script);
声明和初始化变量的前置脚本。例如,如果希望将名为
a
的变量传递到脚本中,请执行以下操作:
var script = string.Format("var a = {0}\r\n", a) + script;
var result = Eval(script);
你能看看DataTable.Compute方法吗。有一个链接指向一个很好的项目Eval表达式。net如果不向方法中传递局部变量,就不能真正调用
Eval(“a+b+c”)
方法,除非这是某种代码注入而不是方法调用。若您能够创建环境,那个么codedom是一种简单的方法:只需创建一个长字符串,用局部变量值包含类定义和字段,并将等式包装到方法调用中。在内存中编译,运行,完成。请看这个链接:您能看看DataTable.Compute方法吗。有一个链接指向一个很好的项目Eval表达式。net如果不向方法中传递局部变量,就不能真正调用Eval(“a+b+c”)
方法,除非这是某种代码注入而不是方法调用。若您能够创建环境,那个么codedom是一种简单的方法:只需创建一个长字符串,用局部变量值包含类定义和字段,并将等式包装到方法调用中。在内存中编译、运行、完成。请参阅以下链接:Eval()是什么?可能我误解了这个问题。我以为OP是在问这个问题:既然能够编译和执行包含c代码的字符串,程序如何传入局部变量?“我需要一个函数”,OP说。既然你不知道什么是Eval()
,为什么你认为它支持你所建议的答案?我假设Eval()
是编译函数的占位符,有点像OP使用的是Foo()
,但有一个更具代表性的名称。正如我所说,我可能误解了这个问题。Eval()是什么??也许我误解了这个问题。我以为OP在问这个问题:既然能够编译和执行包含c代码的字符串,程序如何传递局部变量?“我需要一个函数”——OP说。既然你不知道什么是Eval()
,为什么你认为它支持你建议的答案?我假设Eval()
是编译函数的占位符,有点像OP使用的是Foo()
,但有一个更具代表性的名称。正如我所说,我可能误解了这个问题。