一个基础知识,但不是每个人都能说清楚。
子类对象转换为父类时,可以隐式转换。
父类对象转换为子类时,必须显示转换,如父类类型所指向的实际对象是父类对象而非子类对象,则出现运行时错误InvaildCastException。
使用as操作符可以避免InvalidCastException,只是当转换不成功时返回null。
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
MyTypeB是MyTypeA的子类,第二句将引发InvalidCastException,而第三句不会出错,只是b2为null引用。
还有一个is操作符,这个操作符可以判断该变量实际引用的对象的类型是否是一个指定的类型,注意是实际引用的对象类型,而不理会该引用是抽象类类型还是一个接口。
当实际引用的是一个null的时候会返回一个false.