如何轻松访问继承类的功能?

How to access functionality of inherited classes easily?

假设 Door 继承自 Portal 并且有一个字段 locked (bool)。 portalsPortal

的数组

以下代码无效,因为我尝试访问不属于我正在使用的 class 的字段:

for (int i = 0; i < portals.Length; ++i) 
{
if (portals[i] is Door) if (portals[i].locked == false) //...
}

有什么简单的方法可以访问派生的 class?

你可以这样写:

if(portals[i] is Door door) if(door.locked == false) 

这对你有帮助。

if (portals[i] is Door door)
    if (door.locked == false) 
...

这使用了pattern-matching expression portals[i] is Door door (表达式 is type variable") 将对相关门户的 Door-typed 引用分配给新变量 door.

您甚至可以在相同的if条件下声明后直接使用新变量:

if (portals[i] is Door door && !door.locked) 
   ...