日期:2014-05-16  浏览次数:20933 次

强制类型转换和as运算符,区别在哪
强制类型转换和as运算符,区别在哪
------解决方案--------------------
强制类型转换:转换不成功会抛出异常,对引用类型和值类型都适用。
as运算符:转换不成功得到一个null值,不会抛出异常;仅适用于引用类型,不能用于值类型。
------解决方案--------------------
最常用的考虑就是要看下面的语句是否需要判断返回是否为null。如果不需要判断,那么就用前者就好了。

关于“类型转换”的一个常见误解,可以参考以前的一个帖子:http://bbs.csdn.net/topics/360039451
------解决方案--------------------
引用:
强制类型转换:转换不成功会抛出异常,对引用类型和值类型都适用。
as运算符:转换不成功得到一个null值,不会抛出异常;仅适用于引用类型,不能用于值类型。
所以经常用 as,转换完记得判断是不是null
------解决方案--------------------
我是用is和as配合着用
------解决方案--------------------
先is后as,针对引用类型
------解决方案--------------------
我是用is和as配合着用 
------解决方案--------------------
强制类型转换:转换不成功会抛出异常,对引用类型和值类型都适用。
as运算符:转换不成功得到一个null值,不会抛出异常;仅适用于引用类型,不能用于值类型。 
顶。。。。。。。。。
------解决方案--------------------
大多数时候我们使用as的场景,此时使用is恰好是画蛇添足的,所以才用as(根据返回的结果是否是null来得到与not is一样的作用,而且还能得到最终的转换结果(而is根本没有转换结果这一说)。

所以说“is和as配合”,我反而糊涂了。
------解决方案--------------------
if(a is B)
{
  B b = a as B;
}
我是用的类似的代码
------解决方案--------------------
msdn已经告诉你答案了
http://msdn.microsoft.com/zh-cn/library/cscsdfbt(v=vs.80).aspx

自己看把,看完以后你就明白sp1234说的是啥了

as 本身等效与
expression is type ? (type)expression : (type)null

所以在后续使用上is判定不是必须的,而null判定反而是必须的