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

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

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

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

int myIntValue = (int)myNumericUpDown.Value;

要么:

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

最佳答案 当然,我们无法深入了解最初编写该代码的程序员的想法,但是通过字符串进行数字转换对于较新的程序员来说非常普遍.据推测他们是先写的

int myIntValue = myNumericUpDown.Value

得到一个编译器错误,找到了Int32.Parse并将各个部分放在一起.

根本没有理由首先将它转换为字符串,然后从中解析一个整数 – 如果它是低效和难以阅读的.

实际上请注意,如果由于某种原因ToString给出一个实际的十进制数(如3.0而不是3),代码将抛出一个未捕获的System.FormatException.假设您在运行时没有看到异常,我推断控件设置为Value属性总是一个整数,从不像1.932那样,因此我认为将它作为整数的最快方法是一个强硬的演员

int myIntValue = (int)myNumericUpDown.Value;

(并为表单设计器弄乱的不可避免的情况添加一个try / catch,并将控件的初始值设置为0.5).

点赞