最好使用 int.Parse 或 Convert.ToInt32 [重复]

问题描述 投票:0回答:4

可能重复:
int.Parse() 和 Convert.ToInt32 之间的主要区别是什么

我想知道使用 Convert.ToInt32 VS int.Parse 的优点和缺点。

这是我使用的语法示例:

int myPageSize = Convert.ToInt32(uxPageSizeUsersSelector.SelectedValue);

int myPageSize = int.Parse(uxPageSizeUsersSelector.SelectedValue);

我也找到了这些文章,也许它们可以帮助讨论:

c# asp.net performance
4个回答
28
投票

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
类的场景。


17
投票

没有太大区别。这是在 msdn 上找到的引用。

基本上 Convert 类可以做到这一点 更容易在所有基础之间进行转换 类型。

Convert.ToInt32(String, IFormatProvider) 下面调用 Int32.Parse。所以唯一的区别是 如果将空字符串传递给 转换它返回 0,而 Int32.Parse 抛出一个 参数空异常。 MSDN


3
投票

我无法根据性能回答,但我的首选方法始终是 int.tryparse(mystring, out myint) 因为这会给出一个干净的失败,您可以在程序流程中测试它(而不是执行 try/catch)。


2
投票

Convert 接口是一种更通用的接口。但最终结果应该是相同的。

在内部,它只是调用 int.Parse:

public static int ToInt32(String value) {
    if (value == null)
        return 0;
    return Int32.Parse(value, CultureInfo.CurrentCulture);
}

以上代码来自参考源。

© www.soinside.com 2019 - 2024. All rights reserved.