我有一个抽象类 Event
,以及一个扩展它的具体子类 PlaceChangeEvent
。在一个事件监听器中,我有以下代码:
void onEvent(Event event) {
PlaceChangeEvent pce = null;
if(event is PlaceChangeEvent)
pce = (PlaceChangeEvent)event; // <== error is here
else
throw new Exception("Event is not a PlaceChangeEvent.");
Place place = pce.place;
presenterProvider.display(place);
}
如果event
的运行时类型是PlaceChangeEvent
,那么我需要将事件强制转换为该类型,以便能够访问其属性。但是在类型转换中,我遇到了编译器错误,提示:
不能将类型为“Type”的值分配给类型为“PlaceChangeEvent”的变量
我错在哪里了,我需要做什么来修复它?
event
的运行时类型是PlaceChangeEvent
之外的另一个Event
子类怎么办?比如说我有另一个名为LogEvent
的子类,在运行时event
实际上是一个LogEvent
(而不是PlaceChangeEvent
)会发生什么?强制转换会怎样? - IAmYourFaja