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.ToInt
将 object 转换为整数,如果值为 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()区别