我有一个包含大约 100 个对象的列表,这些对象恰好是瓷砖。它看起来像这样:
List<Tile> Tiles;
在我的代码的其他地方,我有从 tile 基类派生的类,我将在这个例子中使用 house:
public class house : Tile
在顶部列表中,我向数据结构添加了不同类型的图 block :
Tiles.add(new house());
Tiles.add(new church()); //ect. ect.
我的问题是,如果我通过 for 循环之类的控制结构在何处引用该列表,我如何知道哪些瓷砖是教堂或房屋。基本上我需要将两个不同类型的瓷砖放在一起比较。甚至有可能知道我引用的是哪个子类?我敢肯定对此有一个简单的解释,但是在面向对象编程方面我不是很精通,所以我什至不完全确定在提供帮助时我应该寻找什么。
最佳答案
这里有多种选择
- 您可以使用
is
/as
来检查特定对象以查看它是否属于特定类型 - 您可以添加一个鉴别器 - 也许是一个枚举属性,例如
.TileType
(比较:Expression.NodeType) - 您可以改用
虚拟
方法,这样您就不需要知道类型是什么:您只需说“在这里做任何类型的事情”(即调用虚拟方法)
关于c# - 如何确定我在列表中引用的子类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10781641/