关于类型的判断和转换有is和as这两种操作符。具体区别和用法如下:
is是对类型的判断,返回true或false。如果被检测对象的类型是某个类型或其子类型才返回true,否则返回false,另外is操作符不会抛出异常。
bool b1 = (o is object); //b1为true bool b2 = (o is Employee); //b2位false
如果对象应用为null,那么is操作符总是返回false,因为没有对象可以检查对象。
if(o is Employee){ Employee e = (Employee)0; //在if语句中使用e }
在上面的代码中,CLR(公共语言运行时)对象类型检查了两次,is首先检查o所引用的对象是否和Employee类型兼容。如果兼容,那么在if语句内CLR在执行转换时又会检查o是否为一个Employee引用。这种编程范式十分常见,C#便提供了一种新的类型检查,转换方式。即as操作符,他可以在简化代码的同时,提高性能。代码如下:
Employee e = o as Employee; if(e != null){ //在if语句中使用e }