浅析is和as两个关键词在类型转换时的使用_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 浅析is和as两个关键词在类型转换时的使用

浅析is和as两个关键词在类型转换时的使用

 2017/11/2 23:11:33  王琴  程序员俱乐部  我要评论(0)
  • 摘要:is检查对象是否兼容与指定类型,返回Boolean值true或者false,值得注意的是,在使用is进行类型转换的时候是永远不会抛出异常的,例如:objecto=newObject();Booleana=(oisobject);//返回a=trueBooleanb=(oisEmployee)//返回b=false如果对象是null,则返回结果为false,原因是没有可检查其类型的对象,及null不是对象。is操作符的常规用法:if(oisEmployee){Employeee=
  • 标签:使用 关键词 类型转换

is检查对象是否兼容与指定类型,返回Boolean值true或者false,值得注意的是,在使用is进行类型转换的时候是永远不会抛出异常的,例如:

    object o=new Object();

    Boolean a=(o is object);    //返回a=true

    Boolean b=(o is Employee)  //返回b=false

  如果对象是null,则返回结果为false,原因是没有可检查其类型的对象,及null不是对象。

  iscaozuofu.html" target="_blank">操作符的常规用法:

    if(o is Employee){

      Employee e=(Employee)o;//类型转换

    }

  在上边这段代码中其实对o对象进行了两次类型检查,is操作符首先核实o是否兼容与Employee类型,如果是的话,在if语句内部转换时,CLR(公共语言运行时)会再次核实o是否引用一个Employee。CLR的类型检查增强了安全性,但无疑对性能造成一定的损耗,

所以C#提供了AS操作符,目的是简化这种代码的写法,同时提高性能。

  Employee e=o as Employee;

  if(e!=null){

    //使用e

  }

  在这段代码中,CLR核实o是否兼容与Employee类型,如果是,as返回对同一对象的非null引用。如果不兼容与Employee类型,as返回null,这样CLR就只校验一次对象类型,这个会比is的速度快很多。

as操作符的工作方式和强制类型转换一样,只是它永远不抛出异常,如果对象不能转换,则返回null,所以使用as转换的类型前需判断对象是否为null,否则会出现异常,如:

  Object o =new Object();

  Employee e= o as Employee;//此处类型转换失败,e=null;并不会抛出异常

  e.Tostring();// 使用e抛出NullReferenceException异常信息

上一篇: Asp.Net Web API(四) 下一篇: 没有下一篇了!
发表评论
用户名: 匿名