当前位置:  开发笔记 > 编程语言 > 正文

c#将表达式中的字符串转换为int

如何解决《c#将表达式中的字符串转换为int》经验,为你挑选了1个好方法。

我正在开发一个将函数列表转换为c#代码的小项目.例如:temp1.greaterThan(1); temp2.​​contains( "A"); temp1,temp2是字符串类型中的表达式变量.源代码是:

var temp1 = Expression.Variable(typeof(string), "temp1");   

所以我认为我需要将temp1转换为整数变量.我尝试过以下方法但没有效果:

Expression greaterThan = Expression.GreaterThan(temp1, Expression.Constant(1));

它将抛出exeption,因为temp1是字符串,因此无法与1进行比较.

Expression.GreaterThan(Expression.Call(typeof(int).GetMethod("Parse"), temp1), Expression.Constant(1));

它引发了"发现的模糊匹配".例外

Expression.GreaterThan(Expression.Call(typeof(Convert).GetMethod("ToInt32"), temp1), Expression.Constant(1));

相同的例外:找到了模糊的匹配.

Expression.GreaterThan(Expression.Convert(temp1,typeof(Int32)), Expression.Constant(1));

例外:类型'System.String'和'System.Int32'之间没有定义强制运算符.

所以我想我需要在Expression.GreaterThan方法中有一个转换方法.有人有想法吗?非常感谢.



1> Cheng Chen..:

您应该使用int.Parse解析字符串而不是显式转换.请注意,int.Parse有一些重载,这就是为什么你得到一个"模糊匹配发现"异常.

var temp1 = Expression.Variable(typeof(string), "temp1");

//use int.Parse(string) here
var parseMethod = typeof(int).GetMethod("Parse", new[] { typeof(string) }); 

var gt = Expression.GreaterThan(Expression.Call(parseMethod, temp1), Expression.Constant(1));

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有