代码之家  ›  专栏  ›  技术社区  ›  mask2

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

  •  1
  • mask2  · 技术社区  · 2 年前

    比方说 Door 继承自 Portal 而且有一个领域 locked (布尔)。 portals 是一系列 门户

    当我试图访问不属于我正在使用的类的字段时,以下代码无效:

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

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

    2 回复  |  直到 2 年前
        1
  •  4
  •   Heinzi    2 年前
    if (portals[i] is Door door)
        if (door.locked == false) 
    ...
    

    这使用了 pattern-matching expression portals[i] is Door door (" 表示 is 类型 变量 )将相关门户的门类型引用指定给新变量 door .

    您甚至可以在同一文档中声明新变量后直接使用它 if 条件:

    if (portals[i] is Door door && !door.locked) 
       ...
    
        2
  •  0
  •   Alifvar    2 年前

    你可以这样写:

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

    这对你有帮助。