.NET 类型转换is和as

.NET 中类型转换经常使用到is 和as 

is 和as 在执行时永远不会抛出异常

is 正常使用: 

if(obj is User){
   User u = (User)obj;
}

is就是判断是否是某类型,返回值是true 和false 如图例子 obj不是User类型或者是null则一直返回false,否则返回true。

as 使用:

User u = obj as User;
if(u!=null){
   //ur code...
}

as 是不管你啥类型直接转换,类似于强制类型转换,不过区别是as 不会抛异常(上面说过)。就例子来讲obj如果是User类型则转换成功u就是User类型的对象,如果不是User类型则返回null,所以写完后要判断是否为null,这一点很重要。

上面两者用哪个都可以,细微的讲就是性能的问题了,看过CLR那本书就可以知道。

使用is时,会检查一次obj是否是User类型,成功后使用强制转换时又会去检查一次;

而使用as时只会检查一次obj是否是User类型,成功后多了一次是否等于空的判断,但是这个判断比检查类型所损耗性能要低

所以使用时还是建议使用下面一种方式。



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值