}

    object o=new Object();

    object o=new Object();

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

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

  在下边这段代码中实际对o对象开展了两次品种检查,is操作符首先核实o是否匹配与Employee类型,假倘使的话,在if语句内部转换时,CLR(公共语言运行时)会重新核实o是否引用一个Employee。CLR的体系检查增强了安全性,但无疑对性能造成一定的损耗,

as操作符的办事章程和强制类型转换一样,只是它永远不抛出非常,假诺目的无法转换,则赶回null,所以采用as转换的系列前需判断目的是否为null,否则会出现异常,如:

    //使用e

  if(e!=null){

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

  Employee e= o as Employee;//此处类型转换失利,e=null;并不会抛出卓殊

  Employee e= o as Employee;//此处类型转换战败,e=null;并不会抛出相当

    //使用e

  Employee e=o as Employee;

  Employee e=o as Employee;

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

is检查对象是否配合与指定项目,再次来到Boolean值true或者false,值得注意的是,在利用is举办类型转换的时候是恒久不会抛出异常的,例如:

  倘诺目的是null,则赶回结果为false,原因是绝非可检查其系列的对象,及null不是目的。

  假如目的是null,则赶回结果为false,原因是从未有过可检查其类另外靶子,及null不是目的。

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

  在上头这段代码中实际对o对象举办了五次品种检查,is操作符首先核实o是否匹配与Employee类型,假假如的话,在if语句内部转换时,CLR(公共语言运行时)会重新核实o是否引用一个Employee。CLR的项目检查增强了安全性,但确实对性能造成一定的消耗,

  在这段代码中,CLR核实o是否匹配与Employee类型,假使是,as重回对相同对象的非null引用。要是不配合与Employee类型,as再次回到null,这样CLR就只校验五次对象类型,这些会比is的速度快很多。

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

  if(e!=null){

  在这段代码中,CLR核实o是否匹配与Employee类型,假倘若,as返回对相同对象的非null引用。倘使不匹配与Employee类型,as重临null,这样CLR就只校验一回对象类型,那多少个会比is的速度快很多。

as操作符的干活情势和威胁类型转换一样,只是它永远不抛出特别,假使目的不能够转换,则赶回null,所以拔取as转换的档次前需判断目标是不是为null,否则会出现相当,如:

    if(o is Employee){

is检查对象是不是匹配与指定项目,重返Boolean值true或者false,值得注意的是,在应用is举行类型转换的时候是恒久不会抛出特此外,例如:

  is操作符的正常化用法:

    if(o is Employee){

  e.Tostring();// 使用e抛出NullReferenceException非凡消息

  Object o =new Object();

  Object o =new Object();

  is操作符的健康用法:

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

    }

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

  }

    }

  e.Tostring();// 使用e抛出NullReferenceException非常消息

相关文章

网站地图xml地图