C# 中的 is 和 as

来源:互联网 发布:ohem算法 编辑:程序博客网 时间:2024/05/17 04:15
is  检查一个对象是否兼容于指定的类型,并返回一个Boolean值

ClassA

{

.... 

}

Object o=new Object();

Boolean b1=(o is Object); //b1为true. 

Boolean b2=(o is ClassA) ; b2为false.

如果对象引用是null,is操作符总是返回false,因为没有可检查的其类型的对象。

 is 操作符通常像下面这样使用:

if(obj is ClassA)

{

    ClassA a=(ClassA) obj;

   ... 

 }


as与is做差不多的事情,类型显式强制转换


as操作符的工作方式与强制类型转换一样,只是它永远不会抛出一个异常——相反,如果对象不能转换,结果就是null。
但as有其不同的地方,简化代码,同时提升性能。




请看示例代码: 


Object obj=new Object(); 


ClassA a= obj  as ClassA;


 if(a!=null)  //在if判断a是否为null


{


...


}


在这一段代码中,CLR核实obj是否兼容于ClassA类型,如果是,as会返回对同一个对象的一个非null引用;


如果obj不兼容ClassA类型,as操作符会返回null。


因此,as操作符使CLR只检验一次对象的类型。
原创粉丝点击