如何轻松访问继承类的功能?
How to access functionality of inherited classes easily?
假设 Door
继承自 Portal
并且有一个字段 locked
(bool)。 portals
是 Portal
的数组
以下代码无效,因为我尝试访问不属于我正在使用的 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)
...
假设 Door
继承自 Portal
并且有一个字段 locked
(bool)。 portals
是 Portal
以下代码无效,因为我尝试访问不属于我正在使用的 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)
...