//使用is
public void TestIs()
{
object obj = new object();
//1.判断类型是否相同
if (obj is ClassFg)
{
//如果obj是ClassFg说明转换成功
//2.第二次强制转换
ClassFg fg = (ClassFg)obj;
}
else
{
//类型转换失败
}
}
//使用as
public void TestAs()
{
object obj = new object();
//这里只需要一次转换
ClassFg fg = obj as ClassFg;
if (fg == null)
{
//像ClassFg这样的类型转换失败,失败默认为null
}
else
{
//非空说明转换成功
}
}
is顾名思义:是【is前面的对象类型是否和其后面的对象类型一致,是返回true否则false,判断后转换】
as顾名思义:像【as前面的对象类型像后面的对象类型一样,转换后判断
相同点:都是强制类型转换的操作符
不同点
1. is从判断到转换需要两次操作、效率较低
2. as直接转换就是执行一次操作,能转则转,不能则为null,安全转换永远不抛出异常
所以as相比is安全、效率高