(一)类型转换 is 和 as

c# 是强类型语言。

  CLR最重要的特性之一就是 类型安全,在运行时,CLR总是知道对象的类型是什么,C#所有的类的继承自system.Object ,所以都包含GetType方法,调用GetType方法,即可知道对象的确切类型。

类型转换:

  派生类向基类转换时,可以直接转换(隐式转换)。

  基类向派生类转换时,需要显示转换(注意这里如果要转换的对象不是“派生类类型或派生类的派生类型”,会在运行时抛出异常)。

使用 is 和 as 转换符

  C#语言还提供了另外一种类型转换的方式,is和as  

  is用来检查对象是否兼容指定类型,返回 true or false ,永远不会抛出异常。

eg:

1 if(o is Student)
2 {
3    var a = (Student)o;      
4 }

 上面的代码中  CLR实际上做了两次类型检查,如果每处类型转换都要这样写,那无疑对性能是有很大的影响的,所以C#提供了 as 操作符,目的就是简化上述代码,优化其性能。

eg :

1 var a = o as Student
2 if(a != null)
3 {
4     //TODO:  
5 }

as 操作符与is一样永远不会抛出异常,但是会直接类型转换操作,如果CLR发现对象无法转换为指定类型,会返回null值,这个时候我们只需要判断对象是否为null就可以了。

as 只会做一次类型检查加一次判断null值,判断null值要比类型检查容易的多。

在大多数场景中 ,as都可以替代is。

  

  

转载于:https://www.cnblogs.com/jasonbourne3/p/11471132.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值