参考:http://blog.sina.com.cn/s/blog_63f15e560100hzp6.html
http://blog.csdn.net/xqiangqiang/article/details/5287447
首先:
总结一下(xxx)和xxx.Parse(),Convert.xxx(),xxx.TryParse(string, out xx)的区别:
(int)转换:用在数值范围大的类型转换成数值范围小的类型时使用,但是如果被转换的数值大于或者小于数值范围,则得到一个错误的结果,利用这种转换方式不能将string转换成int,会报错。
Int32.Parse(),转换:在符合数字格式的string到int类型转换过程中使用,并可以对错误的string数字格式的抛出相应的异常。
Convert.ToInt32()转换:使用这种转换,所提供的字符串必须是数值的有效表达方式,该数还必须不是溢出的数。否则抛出异常。
xxx.TryParse(string, out xx)转换:TryParse 方法在转换失败时不引发异常,赋默认值。
as is 和强制类型转换
is 运算符只返回一个布尔值。因此,如果只想确定对象的类型,而无需对它进行实际强制转换,则可以使用 is 运算符。
Effective c#中强调as is优于强制类型转换,
在 C# 中已经提供了一个很好的类型转换方式,那么在进行类型转换的时候,可以按照如下的方式进行选择。
|
类型转换 |
使用选择 |
|
Object => 已知引用类型 |
使用 as 操作符来完成 |
|
Object => 已知值类型 |
先使用 is 操作符来进行判断,再用类型强转方式进行转换 |
|
已知引用类型之间转换 |
首先需要相应类型提供转换函数,再用类型强转方式进行转换 |
|
已知值类型之间转换 |
最好使用系统提供的 Convert 类所涉及的静态方法 |