is检查对象是否兼容于指定类型,返回Boolean值true或false。使用is永远不会抛出异常。
例:Object o=new Object();
bool b1=(o is Object);//b1=true
bool b2=(o is Employee);//b2=false
如果对象引用为null,则总是返回false,因为没有可检查其类型的对象。
is操作符通常这样使用:
Object o=new Object();
if(o is Employee)//1次
{
Employee emp=(Employee)o;//2次
}
但是这样使用会检查两次o与Employee的类型是否兼容,所以效率比较低,因此C#提供了as操作符来提高效率。
as的工作方式与强制类型转换一样,只是使用as不会抛出异常。
Employee emp=o as Employee;//转换不成功,emp为null。(这里只检查了1次)
if(emp!=null)
{
}
如果as转换成功,则会返回对同一个对象的非null引用。