最好使用int.Parse或Convert.ToInt32

时间:2010-10-18 15:07:07

标签: c# asp.net performance

  

可能重复:
  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

4 个答案:

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

以上代码来自参考来源。