a、IS只是做类型兼容判断,并不执行真正的类型转换。返回true或false,不会返回null,对象为null也会返回false。is操作符永远不会抛出异常。
if(a is Dog)
{
Dog d = (Dog)a;
...
boolean b1=(obj is Object); //b1 为true
}
b、AS操作符类似于强制转换,但又有区别,当对象为null时,不会抛异常而是会返回null。
Dog d = a as Dog;
if(d!=null)
{
...
Class1 b = o as Class1; // b = null
}