【C#】(int)、int.Parse()、int.TryParse()和Convert.ToInt32()的区别

1)对于转换对象,Convert.ToInt32()可以为多种类型(例出数字类型外bool、DateTime等),int.TryParse()和int.Parse()只能是整型字符串类类型(即各种整型ToString()之后的形式,不能为浮点型,否则int.Parse()就会出现输入的字符串格式不正确的错误,int.TryParse()也会返回False,输出参数为0),(int)只能是数字类型(float,int,unit等);
2)对于空值NUll,从运行报错的角度讲,(int)强制转换和int.Parse()都不能接受Null;Convert.ToInt32()其实是在转换前先做了判断,如果参数是Null,则直接返回0,否则就调用int.Parse()进行转换,int.TryParse()其实是对Int.Parse()做了一个异常处理,如果出现异常则返回False,并且将输出参数返回0;
3)针对浮点型的取舍问题,浮点型只有Convert.Toint32()和(int)能进行转换,但是也是进行了取舍了的,Convert.ToInt32()采取的取舍是进行四舍五入,而(int)则是截取浮点型的整数部分,忽略小数部分,例如Convert.ToInt32(1.499d)和(int)1.499d都返回1,convert.Toint32(1,5d)返回2,而(int)1.5d还是返回1;
4)关于溢出,将大的数据类型转换为小的数据类型时Convert.ToInt32()和Int.Parse()都会报出溢出错误,值对于Int32太大或太小,而(Int)不报错,但是返回值为-1,
如此可见,我们在进行数据转换前选择转化你方法要谨慎,如果是数字类型可以考虑直接用(Int)强制转换,如果是整型字符串类型的,考虑用int.Parse()进行转换,如果不是这两种类型,考虑用Conver.ToInt32()进行转换。

猜你喜欢

转载自blog.csdn.net/MyxZxd/article/details/85200610