Convert.ToInt16 或 32 或 64 和 Int.Parse 有啥区别? [复制]

Posted

技术标签:

【中文标题】Convert.ToInt16 或 32 或 64 和 Int.Parse 有啥区别? [复制]【英文标题】:what is the difference between Convert.ToInt16 or 32 or 64 and Int.Parse? [duplicate]Convert.ToInt16 或 32 或 64 和 Int.Parse 有什么区别? [复制] 【发布时间】:2011-07-10 16:40:54 【问题描述】:

可能重复:Whats the main difference between int.Parse() and Convert.ToInt32

我想知道两者有什么区别:

Convert.ToInt16 or Convert.ToInt32 or Convert.ToInt64

Int.Parse

他们都在做同样的事情,所以只想知道有什么不同?

【问题讨论】:

欺骗***.com/questions/199470/… 【参考方案1】:

Convert.ToIntobject 转换为整数,如果值为 null,则返回 0。

int x = Convert.ToInt32("43"); // x = 43;
int x = Convert.ToInt32(null); // x = 0;
int x = Convert.ToInt32("abc"); // throws FormatException

Parse字符串转换为整数,如果值无法转换则抛出异常

int x = int.Parse("43"); // x = 43;
int x = int.Parse(null); // x throws an ArgumentNullException
int x = int.Parse("abc"); // throws an FormatException

【讨论】:

我尝试了这些示例(使用 .NET 4 和 .NET 3.5),Convert.ToInt32("abc"); 会像int.Parse("abc"); 一样抛出System.FormatException。唯一没有抛出异常的时间是Convert.ToInt32(null); @Joshua Rodgers:非常感谢,我更正了我的答案。【参考方案2】:

Convert.ToInt32 如果输入字符串为空,则返回 0。 Int32.Parse 会抛出异常。

【讨论】:

【参考方案3】:

    Convert.To(s) 在参数为空时不会抛出异常,但Parse() 会。Convert.To(s) 在参数为空时返回 0。

    Int.Parse()Int.TryParse() 只能转换字符串。 Convert.To(s) 可以采用任何实现 IConvertible 的类。因此,Convert.To(s) 可能是 wee bit slower 而不是 Int.Parse(),因为它必须询问它的参数它的类型是什么。

【讨论】:

以上是关于Convert.ToInt16 或 32 或 64 和 Int.Parse 有啥区别? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

asp.net c# int.Parse 或 Convert.toInt [重复]

c#中Convert.ToString(Convert.ToInt32(Convert.ToDouble(tbx_speed.Text)啥意思

Convert.ToInt32 和 Int32.Parse 有啥区别? [复制]

Convert.ToInt32()和int.Parse()区别

Convert.ToInt32()和int.Parse()的区别

Convert.ToInt32 和 (int) 有啥区别?