gpt4 book ai didi

c# - 对派生类使用非泛型基类集合?

转载 作者:行者123 更新时间:2023-11-30 21:05:19 24 4
gpt4 key购买 nike

好吧,这很难用语言来解释。所以这是一个例子。在 SDL .NET API 中,有一个名为 SpriteCollection 的类它被设计成,好吧…… Sprite 的集合。然而问题在于,出于某种原因,开发人员决定不制作 SpriteCollection通用,如 .NET List<>类(class)。所以,我想,它只能与 Sprite 一起使用从 Sprite 继承的类或其他类?无论如何,假设我推导出 Tile来自 Sprite .我向它添加了两个新属性:

class Tile : Sprite
{

public Tile(char symbol = default(char), bool solid = true)
{
Symbol = symbol;
Solid = solid;
}

public char Symbol
{
get;
set;
}

public bool Solid
{
get;
set;
}
}

现在,我该如何使用 SpriteCollectionTile s 并且仍然可以使用 Tile独家属性,如 Solid

一个(可能是愚蠢的)解决方案可能是这样的:

Tile t = (Tile) myCollection[i];
if (t.Solid) { ... }

有没有更好的方法来做这样的事情?

最佳答案

您建议将 SpriteCollection 的返回值转换为 Tile 是实现此目的的方法。如果您需要使用提供的集合类并且无法更改它,那么您没有更好的选择。

关于c# - 对派生类使用非泛型基类集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11748174/

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