我们知道,.Net中的类型分为值类型和引用类型两大类。
常见的问题有各种类型间的转换。在C#中进行转换一般有以下几种方法
类型转换包括显示转换和隐式转换,在.NET中类型转换的基本规则如下:
·任何类型都可以安全的转换为其基类类型,可以由隐式转换来完成;
·任何类型转换为其派生类型时,必须进行显示转换,转换的规则是:(类型名)对象名;
·使用GetType可以取得任何对象的精确类型;
·基本类型可以使用Covert类实现类型转换;
·除了string以外的其他值类型都有Parse方法,用于将字符串类型转换为对应的基本类型;
值类型和引用类型的转换机制称为装箱(boxing)和拆箱(unboxing)。
parse方法与convert.to..()方法区别?
解:
1)这两个方法的最大不同是它们对null值的处理方法:
Convert.ToInt32(null)会返回0而不会产生任何异常,但int.Parse(null)则会产生异常。
没 搞清楚Convert.ToInt32和int.Parse()的细细微区别时千万别乱用,否则可能会产生无法预料的结果,举例来说:假如从url中取一 个参数page的值,我们知道这个值是一个int,所以即可以用 Convert.ToInt32(Request.QueryString["page"]),也可以 用,int.Parse(Request.QueryString["page"]),但是如果page这个参数在url中不存在,那么前者将返回0,0 可能是一个有效的值,所以你不知道url中原来根本就没有这个参数而继续进行下一下的处理,这就可能产生意想不到的效果,而用后一种办法的话没有page 这个参数会抛出异常,我们可以捕获异常然后再做相应的处理,比如提示用户缺少参数,而不是把参数值当做0来处理。
(2)还有一点区别就是
a. Convert.ToInt32(double value)
如果 value 为两个整数中间的数字,则返回二者中的偶数;即 3.5转换为4,4.5 转换为 4,而 5.5 转换为 6。 不过4.6可以转换为5,4.4转换为4
b. int.Parse("4.5")
直接报错:"输入字符串的格式不正确".
c. int(4.6) = 4
Int转化其他数值类型为Int时没有四舍五入,强制转换
int.Parse是转换String为int
Convert.ToInt32是转换继承自Object的对象为int的.
你得到一个object对象,你想把它转换为int,用int.Parse就不可以,要用Convert.ToInt32.
个人总结:
(1)Convert.ToInt32的参数比较多,Int.Parse只能转换string类型的.
(2)Parse就是把String转换成int,char,double....等,也就是*.Parse(string) 括号中的一定要是string.
(3)Convert可以提供多种类型的转换,也就是Convert.*()括号中可以为很多种类型(包括string).
在C#中已经提供了一个很好的类型转换方式,那么在进行类型转换的时候,可以按照如下的方式进行选择。
类型转换 | 使用选择 |
Object =>已知引用类型 | 使用as操作符来完成 |
Object =>已知值类型 | 先使用is操作符来进行判断,再用类型强转方式进行转换 |
已知引用类型之间转换 | 首先需要相应类型提供转换函数,再用类型强转方式进行转换 |
已知值类型之间转换 | 最好使用系统提供的Convert类所涉及的静态方法 |
文章部分内容引用:你必须知道的.NET http://kb.cnblogs.com/page/42296/