is操作符通常这样使用: if (o is Employee){ Employee e =(Employee) 0 ;

时间:2022-01-29 01:09:44

is查抄一个东西是否兼容于指定的类型,不返回Boolean值。注意is操纵符永远不会抛异常。is操纵符凡是这样使用:

if(o is Employee) { Employee e=(Employee) 0; //其他措置惩罚惩罚... }

在这段代码中,,CLR实际会查抄两次东西类型。is操纵符首先核实o是否兼容于Employee类型。如果是,将在if语句内部再次核实o是否引用一个Employee。CLR的类型查抄增强了安适性,但无疑也对性能造成必然影响。这是因为CLR首先必需判断变量(o)引用的东西的实际类型。然后,CLR必需遍历担任条理布局用每一个基类型去查对指定的类型。这是一个相当常用的编程模式,所以C#专门供给了as操纵符,目的简化这种代码的写法,同时提升其性能。

Employee e=o as Employee; if(e!=null) { //后续其他措置惩罚惩罚 }

在这段代码中,CLR核实o是否兼容于Employee类型;如果是,as会返回对同一个东西的一个非null引用。如果不兼容,返回null。as操纵符造成CLR只校验一次东西的类型。if语句只是查抄e是否为null。这个查抄速度比校验东西的类型快得多。

标签:

原文地点:https://www.cnblogs.com/MicroHeart/p/8979561.html