首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

挟制类型转换和as运算符,区别在哪

2013-01-11 
强制类型转换和as运算符,区别在哪强制类型转换和as运算符,区别在哪[解决办法]强制类型转换:转换不成功会抛

强制类型转换和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判定反而是必须的

热点排行