gpt4 book ai didi

c# - 调用多个类类型列表中的特定类函数

转载 作者:行者123 更新时间:2023-12-02 05:53:47 25 4
gpt4 key购买 nike

我正在尝试使用 C# 制作 2D 游戏(使用与问题无关的 XNA)。我创建了一个基本的图 block 类,游戏中的所有图 block 都将从该类继承基本功能,例如如何将自身绘制到屏幕上等。

我所拥有的是该基瓷砖类的列表,其中包含从基类继承的所有其他类,即:门、墙、地砖等。

    List<TileBase> tileList = new List<TileBase>();

...

tileList.Add(new Door(arguments));
tileList.Add(new Wall(arguments));

当我只想影响该列表中的某种类型的类时,问题就出现了。例如,门具有 Open()、Close() 和 Toggle() 的某些函数。如果我尝试简单地创建一个循环来遍历列表中的每个 Door 类:

    foreach(Door door in tileList)
{
door.Toggle();
}

我收到错误:

    "Unable to cast object of type '...Tiles.Wall' to type '...Tiles.Door'."

基本上,我有一个包含不同类别的列表。如何在循环中访问类中的特定函数,而不会使程序在尝试在没有所述函数的另一种类型的类上崩溃时崩溃。

最佳答案

您可以研究 OfType 方法,它根据类型进行过滤:

using System.Linq;

...

foreach(var door in tileList.OfType<Door>())
{
door.Toggle();
}

关于c# - 调用多个类类型列表中的特定类函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17181215/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com