is检查对象是不是匹配与指定项目,返回Boolean值true或者false,值得注意的是,在应用is进行类型转换的时候是永远不会见扔来异常的,例如:

is检查对象是不是匹配与指定项目,返回Boolean值true或者false,值得注意的凡,在用is进行类型转换的上是永久不会见扔来大的,例如:

    object o=new Object();

    object o=new Object();

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

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

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

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

  如果目标是null,则回结果吧false,原因是未曾可检查其项目的对象,及null不是目标。

  如果目标是null,则归结果为false,原因是尚未但检查该类别的靶子,及null不是目标。

  is操作符的常规用法:

  is操作符的例行用法:

    if(o is Employee){

    if(o is Employee){

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

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

    }

    }

  以上方这段代码中实际上对o对象进行了有限不好品种检查,is操作符首先核实o是否配合与Employee类型,如果是的话,在if语句内部转换时,CLR(公共语言运行时)会重新核实o是否引用一个Employee。CLR的档次检查增强了安全性,但可靠对性造成一定之耗费,

  以上方这段代码中实际上对o对象进行了有限次品种检查,is操作符首先核实o是否配合与Employee类型,如果是的话,在if语句内部转换时,CLR(公共语言运行时)会重复核实o是否引用一个Employee。CLR的路检查增强了安全性,但确实对性造成一定之淘,

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

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

  Employee e=o as Employee;

  Employee e=o as Employee;

  if(e!=null){

  if(e!=null){

    //使用e

    //使用e

  }

  }

  于当下段代码中,CLR核实o是否配合与Employee类型,如果是,as返回对平对象的非null引用。如果非匹配与Employee类型,as返回null,这样CLR就惟有校验一浅对象类型,这个会比is的快慢快多。

  以当时段代码中,CLR核实o是否配合与Employee类型,如果是,as返回对同一对象的非null引用。如果未兼容与Employee类型,as返回null,这样CLR就独自校验一蹩脚对象类型,这个会较is的快快多。

as操作符的工作方法和强制类型转换一样,只是它们世代不遏来大,如果目标不可知换,则归null,所以用as转换的门类前需要判断目标是不是也null,否则会出现异常,如:

as操作符的行事法跟要挟类型转换一样,只是它永远不抛弃来老,如果目标非可知换,则归null,所以使用as转换的档次前待判断目标是否为null,否则会出现异常,如:

  Object o =new Object();

  Object o =new Object();

  Employee e= o as Employee;//此处类型转换失败,e=null;并无见面弃来特别

  Employee e= o as Employee;//此处类型转换失败,e=null;并无见面丢弃来很

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

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