Convert.ToInt32(string)和Int32.Parse之间的区别?

时间:2009-05-02 09:21:12

标签: .net

完全重复:.Net Parse versus Convert 有谁可以帮助我?

4 个答案:

答案 0 :(得分:5)

除非字符串实际为空,否则

Convert.ToInt32(string)Int32.Parse(string)会产生相同的结果。

在这种情况下,Int32.Parse(null)会引发ArgumentNullException

但是,Convert.ToInt32(null)返回零。

因此最好使用Int32.Parse(string)

答案 1 :(得分:1)

parse方法为数字格式提供了更多选项。除此之外,它们实际上完全相同。

MSDN说:

Convert.ToInt32() details

Int32.Parse() details

答案 2 :(得分:1)

Int.Parse()尝试解析也可以接受格式

Int.Parse(String, NumberStyles)

你也可以指定参数,解析只会返回true或false来显示解析是否成功

答案 3 :(得分:1)

如果你需要转换一个int,你有3个选项。

int.Parse
Convert.ToInt32
int.TryParse

三者中最好的解决方案通常是int.TryParse。这三者之间的区别在于速度和可靠性。

  • 如果除int之外的任何值,int.Parse将抛出异常 进入它。一般的经验法则是异常是缓慢的。

  • Convert.ToInt32将处理一个null并返回0,但它会抛出 其他输入的例外情况。再一次,例外情况很慢。

  • int.TryParse将处理几乎所有输入。它将返回true或
    false取决于传递的参数是否已转换。如果 结果为false,转换后的int为0.如果结果为true,则为 int已转换,您有一个转换后的int。

我不会将int.Parse用于任何事情。如果我确定我的输入是正确的并且我有某种形式验证,我会使用Convert.ToInt32来保存自己输入额外的行。在所有其他情况下,我会使用int.TryParse

每个语法:

int result;
boolean success;

result = int.Parse(null) = Exception
result = Convert.ToInt32(null) = 0
success = int.TryParse(null, out result) = False/0

result = int.Parse("asd") = Exception
result = Convert.ToInt32("asd") = Exception
success = int.TryParse("asd", out result) = False/0