Convert.ToInt32()是平时还帮你四舍五入,数字距对半的时候它就喜欢偶数了,这是我对它的评价!
当我们传入的是个double且比如6.7这样的参数的时候,这家伙会帮助我们去四舍五入(6.7 会返回7 , 5.3会返回5)
当传入的是个double且小数是.5, 比如4.5的时候,这家伙就来脾气了:
它会返回偶数那一边的数. 比如4.5 在4和5中间,它会返回4
比如5.5在5和6中间,它会返回6
回到C#的技术细节上,来比较一下 (int) number,Convert.ToInt32(), Int32.Parse(), number as int 四者的区别吧!
(int) number 是最早接触的类型转换,比较基本,会抛出异常
Convert.ToInt32() 接收的参数是object,一般不会出错,但是传比较变态的东西,比如“tyui”让它去convert , 它就会抛出异常了。
当变态的参数是null的时候,它又没脾气了。 int x=Convert.ToInt32(null) ; //x=0;
而此时int.parse(null) 表现还是正常的,抛出了异常;
number as int : 先try to do, 尝试着去转换一下,如果不能转换就抛出异常
个人总结:
(1)Convert.ToInt32的参数比较多,Int.Parse只能转换string类型的.
(2)Parse就是把String转换成int,char,double....等,也就是*.Parse(string) 括号中的一定要是string.
(3)Convert可以提供多种类型的转换,也就是Convert.*()括号中可以为很多种类型(包括string).