【问题标题】:Best structure for a growing collection of objects in C#?C# 中不断增长的对象集合的最佳结构?
【发布时间】:2011-10-31 22:05:32
【问题描述】:

对于我的游戏编程课程,我正在为玩家角色设计一个课程。玩家可以在整个游戏过程中收集道具,这些道具可以随时持有并在玩家选择时使用。

我认为动态数组会很好用,但我的背景是 C++(我们在类中使用 Unity,它使用 Java 和 C#),而且我知道在 C# 中内存释放的处理方式不同(我知道有一个垃圾收集器,但不太了解它的功能)。在网上浏览了一段时间后,我找不到任何似乎符合我需要的功能的东西(或者如果我这样做了,我想不到而且我没有意识到)。

如果有人可以列出一个或多个 C# 结构,这将有助于存储不断增长的对象集合,那将非常有帮助。

【问题讨论】:

  • 阅读有关 C# 集合的信息:msdn.microsoft.com/en-us/library/… - 您可能正在查看 List<T>,它类似于 C++ 的 std::vector<T>,并实现了一个动态数组。或者你可能想要一个Dictionary,它实现了一个键值关联数组,比如std::map
  • @birryree,请不要推荐人们使用 .Net 1 的非泛型集合,例如 ArrayList。应该改用List<T>
  • @svick - 更新 - 我的 Java 端正在显示。

标签: c# unity3d


【解决方案1】:

List 可能是您可以使用的最简单的结构,它就像一个动态数组,当您向其中添加内容时会自动增长。它是强类型的,所以它只包含相同类型的对象(如果你有一些用于你的电源接口的接口,你可以有一个IPowerUp 实例的列表)

【讨论】:

  • 我不会说List<T> 是一个动态数组。它一个动态数组,周围有一层薄薄的面纱。
【解决方案2】:

首先查看.NET's generic collections。 (.NET 泛型在概念上与 C++ 模板相似。)ListDictionary 可能对您有用,具体取决于您需要如何存储和检索对象。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多