可能重复:
Whats the main difference between int.Parse() and Convert.ToInt32
大家好,我想知道什么是PRO和CONS使用 Convert.ToInt32 VS int.Parse。 谢谢你的支持!
这是我正在使用的语法示例
int myPageSize = Convert.ToInt32(uxPageSizeUsersSelector.SelectedValue);
int myPageSize = int.Parse(uxPageSizeUsersSelector.SelectedValue);
我也发现了这篇文章,也许可以帮助讨论 http://dotnetperls.com/int-parse http://aspdotnethacker.blogspot.com/2010/04/difference-between-int32parsestring.html http://aspdotnethacker.blogspot.com/p/visual-studio-performance-wizard.html
答案 0 :(得分:25)
Convert.ToInt32
用于处理实现IConvertible
的任何对象,并且可以转换为int
。另外,Convert.ToInt32
会为0
返回null
,而int.Parse
则会返回ArgumentNullException
。
int.Parse
专门用于处理字符串。
事实证明,string
类型的IConvertible
实施仅在int.Parse
方法中使用ToInt32
。
如此有效,如果您在Convert.ToIn32
上致电string
, 正在调用int.Parse
,只需稍微增加一些开销(更多方法调用)
对于从string
到某种原始类型(它们都调用Parse
)的任何转换都是如此。因此,如果您正在处理强类型string
对象(例如,您正在解析文本文件),我建议使用Parse
,因为它更直接。
转换任意对象(例如,由某些外部库返回给你)是我选择使用Convert
类的场景。
答案 1 :(得分:17)
没有太大区别。这是在msdn。
上找到的引用基本上Convert类就可以了 更容易在所有基地之间转换 类型。
Convert.ToInt32(String, IFormatProvider)下面调用 Int32.Parse。所以唯一的区别是 如果传递空字符串 转换它返回0,而 Int32.Parse抛出一个 ArgumentNullException。 MSDN
答案 2 :(得分:3)
我无法根据性能回答,但我首选的方法总是int.tryparse(mystring,out myint),因为这会给你一个干净的失败,你可以在程序流程中测试(而不是做一个try / catch)。
答案 3 :(得分:2)
转换界面是一个更通用的界面。最终结果应该是相同的。
在内部,它只调用int.Parse:
public static int ToInt32(String value) {
if (value == null)
return 0;
return Int32.Parse(value, CultureInfo.CurrentCulture);
}
以上代码来自参考来源。