我在我正在使用的项目中反复遇到这种模式:
int myIntValue = int.Parse(myNumericUpDown.Value.ToString());
这对我来说似乎有点香蕉,从小数点获取一个字符串,然后解析字符串以获得一个int,我想知道是否有一些我缺少的东西需要它。好像它必须是故意的。是否有理由应该使用而不是明显的方法:
int myIntValue = (int)myNumericUpDown.Value;
或者:
int myIntValue = Convert.ToInt32(myNumericUpDown.Value);
答案 0 :(得分:2)
当然,我们无法深入研究最初编写该代码的程序员的想法,但通过字符串进行数字转换对于新程序员来说非常普遍。大概是他们第一次写了
int myIntValue = myNumericUpDown.Value
遇到编译错误,找到Int32.Parse
并将各个部分放在一起。
没有原因在所有中首先将其转换为字符串,然后从中解析一个整数 - 如果有的话,效率低且难以阅读。
事实上请注意,如果由于某种原因ToString
给出实际的十进制数(例如3.0
而不是3
),代码将抛出System.FormatException
而不是Value
抓住。假设您在运行时没有看到异常,我推断控件设置为1.932
属性始终为整数,从不像int myIntValue = (int)myNumericUpDown.Value;
那样,因此我认为最快将它作为整数得到的方法是一个强硬的
try/catch
(并为表单设计器弄乱的不可避免的情况添加0.5
,并将控件的初始值设置为{{1}})。