为什么int.Parse(NumericUpDown.Value.ToString())?

时间:2015-03-18 17:26:41

标签: c#

我在我正在使用的项目中反复遇到这种模式:

int myIntValue = int.Parse(myNumericUpDown.Value.ToString());

这对我来说似乎有点香蕉,从小数点获取一个字符串,然后解析字符串以获得一个int,我想知道是否有一些我缺少的东西需要它。好像它必须是故意的。是否有理由应该使用而不是明显的方法:

int myIntValue = (int)myNumericUpDown.Value;

或者:

int myIntValue = Convert.ToInt32(myNumericUpDown.Value);

1 个答案:

答案 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}})。