C#中is和as的区别

关于类型的判断和转换有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
}
原文地址:https://www.cnblogs.com/reggieqiao/p/5902120.html