as运算符用于在两个引用类型之间进行转换,如果转换失败则返回null,并不抛出异常,因此转换是否成功可以通过结果是否为null进行判断,并且只能在运行时才能判断。演示如下:
string s = objectArray[o] as string;
if(s != null)
{
//转换成功
}else{
//转换失败
}
is运算符用于检查对象是否与给定类型兼容,并不执行真正的转换。如果判断的对象引用为null,则返回false。它并不会抛出异常,且只适用于引用类型转换、装箱转换和拆箱转换。演示如下:
if(obj is MyObject)
{
//在这里可以进行()运算符显式类型转换
}
无论是as还是is运算符,都比直接使用()运算符强制转换更安全。