在C#中处理不断增长的对象集合,最佳结构是什么?

4
为了我的游戏编程课,我正在设计一个玩家角色类。玩家可以在游戏中收集各种强化道具,并且可以随时使用这些道具。
我认为动态数组会很适合这个场景,但是我的背景是C++(我们在课堂上使用Unity,它使用Java和C#),我知道在C#中内存释放的处理方式不同(我知道有垃圾回收器,但并不了解其工作原理)。在网上寻找一段时间后,我没有找到任何似乎适用于我需要的功能的内容(如果我找到了,那可能超出了我的理解能力)。
如果有人能列出适用于存储不断增长的对象集合的C#结构或结构,那将非常有帮助。

阅读有关C#集合的内容:http://msdn.microsoft.com/en-us/library/system.collections.generic.aspx - 你可能正在查看List<T>,它类似于C++的std::vector<T>并实现了动态数组。或者你可能想要一个Dictionary,它实现了像std::map一样的键值关联数组。 - wkl
3
@birryree,请不要推荐人们使用 .Net 1 的非泛型集合,比如 ArrayList。应该使用 List<T> 替代。 - svick
1
@svick - 更新了 - 我的Java端正在显示。 - wkl
2个回答

2

List 是您可能使用的最简单的结构,它类似于动态数组,在添加东西时会自动增长。它是强类型的,因此只包含相同类型的对象(如果您有某些用于电源升级的接口,则可以拥有 IPowerUp 实例列表)。


2
我不会说 List<T> 就像是一个动态数组。它实际上就是一个动态数组,只是在外面包了一层薄薄的面纱。 - svick

0

.NET的泛型集合开始看起。(.NET泛型在概念上类似于C++模板。)根据你需要存储和检索对象的方式,ListDictionary可能会对你有用。

由于你可能有不同类型的对象,考虑使用字典列表,其中键将是字符串标识符或收集对象类型的枚举,值将是对象实例列表。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接