您的位置:首页 > 编程学习 > ASP.NET > 正文

Convert.ToInt32,int.Parse,int.TryParse,(int)的区别

更多 时间:2014-1-18 类别:编程学习 浏览量:1155

Convert.ToInt32,int.Parse,int.TryParse,(int)的区别

Convert.ToInt32,int.Parse,int.TryParse,(int)的区别

一、Convert.ToInt32,int.Parse,int.TryParse,(int)的介绍

 

1 (int)变量名[强制类型转换]

该转换方式主要用于数字类型转换,从int类型到long,float,double,decimal类型,可以使用隐式转换,但是从long类型到int类型就需要使用显式转换,也就是该数据类型转换方式,否则会产生编译错误。

该方式对于浮点数会做无条件舍去,失去精确度

当然,该方式也可以进行object到int得转换,但是,object的值要赋予int类型的值,否则会产生编译错误,而且object为null时也会出错。

最后切忌的一点,千万不要用来处理char类型到int类型的转换,否则传回的的值是ASCII代码,而并不是你想要的值。

 

2 int.Parse(string类型变量名)

 

该方式是将数字内容的字符串转为int类型,如果字符串内容为空或者null时,则抛出ArgumentNullException异常;如果字符串内容不是数字,则抛出FormatException异常;如果字符串内容所表示数字超出int类型可表示的范围,则抛出OverflowException异常。

使用该方法切忌的一点就是只能处理字符串内容,而且字符串内容只能在int类型可表示的范围之内。

 

3 int.TryParse(string s, out int result)

 

该方式也是将数字内容的字符串转为int类型,但是该方式比int.Parse优越的地方,就是它不会出现异常。如果转换成功返回 true,如果转换失败返回 false。很明显,最后一个参数为输出值,如果转换失败,输出值为 0;如果转换成功,则输出相应的值。

 

4 Convert.ToInt32

 

该方式不仅可以将字符串转为int类型,还可以将其它类型的值转成int类型。变量若为object或string类型,当其值为null时,会传回0,不会造成程序错误,但是若此string类型的值为string.Empty,在转型成int时,仍会造成程序错误。

该方式对于浮点数会做四舍五入。

该方式同强制转换一样,不能用来处理char类型,否则传回的是ASCII代码。

 

二、(int)和Int32.Parse(),Convert.ToInt32(),Int32.TryParse的应用举几个例子

 

例子一

long longType = 100;
int intType = longType; // 错误,需要使用显式强制转换
int intType = (int)longType; //正确,使用了显式强制转换

 

例子二

string stringType = "12345";
int intType = (int)stringType; //错误,string 类型不能直接转换为 int 类型
int intType = Int32.Parse(stringType); //正确

 

例子三

long longType = 100;
string stringType = "12345";
object objectType = "54321";
int intType = Convert.ToInt32(longType); //正确
int intType = Convert.ToInt32(stringType); //正确
int intType = Convert.ToInt32(objectType); //正确

 

例子四

double doubleType = Int32.MaxValue + 1.011;
int intType = (int)doubleType; //虽然运行正确,但是得出错误结果
int intType = Convert.ToInt32(doubleType) //抛出 OverflowException 异常

 

例子五

string str = "123456";
int num1 = 0;

Int32.TryParse(str, out num1);  //运行后 num1的值为 :123456

 

三、当字符串为空时

 

Convert.ToInt32() 不抛出任何异常而是返回0;
Int32.TryParse() 不抛出异常,返回true或false 说明解析是否成功,如果返回false 则out调用方将会得到零值;
Int32.Parse() 会抛出异常。


从性能上讲,Int32.TryParse()优于其它两种方法。

 

四、(int)和Int32.Parse(),Convert.ToInt32()三者的区别

 

1、(int)在对long 类型或是浮点型到int 类型的显式强制转换中使用,但是如果被转换的数值大于 Int32.MaxValue 或小于 Int32.MinValue,那么则会得到一个错误的结果。

2、Int32.Parse()在符合数字格式的 string 到 int 类型转换过程中使用,并可以对错误的 string 数字格式的抛出相应的异常。

3、Convert.ToInt32()则可以将多种类型的值转换为 int 类型,也可以对错误的数值抛出相应的异常。

4、. Convert.ToInt32(double value)


如果 value 为两个整数中间的数字,则返回二者中的偶数;即 3.5转换为4,4.5 转换为 4,而 5.5 转换为 6。 不过4.6可以转换为5,4.4转换为4
 

5、int.Parse("4.5")


直接报错:"输入字符串的格式不正确".

 

6、int(4.6) = 4


Int转化其他数值类型为Int时没有四舍五入,强制转换

 

五、总结


(1)Convert.ToInt32的参数比较多,Int.Parse只能转换string类型的.
(2)Parse就是把String转换成int,char,double....等,也就是*.Parse(string) 括号中的一定要是string.
(3)Convert可以提供多种类型的转换,也就是Convert.*()括号中可以为很多种类型(包括string).