我应该使用数组或arraylist / list<>

时间:2013-12-05 02:45:08

标签: c# arrays

所以这至少与你在Minecraft游戏中遇到的情况类似。

基本上我有一个你反对的游戏,我想根据世界上的位置创建和销毁对象。

我觉得我应该使用数组,因为我可以对数组进行排序并通过

快速搜索它
array[spawnposition] = gameobject 

当我创建一个对象来存储该对象时,它立即存放在该位置的正确排序位置

然后使用精确的spawn位置进行修改和删除。

问题是,甚至100 X 100 X 100区域是一个非常大的阵列。

所以我不确定如何最好地缓解这种情况。 我认为它主要是问题的立方体,所以我想如果我只是限制了一个维度,我可以进一步得到更多,但我很好奇像我的世界如何处理大规模的世界。

我确信他们会将数组分块并创建数组数组以导航到正确的数组。

但是我想知道是否有更好的方法,例如,使得空值可能不占用空间。因此,只有当我为数组赋值时,它才能找到它的空间,因此非常大的数组实际上只有实际项目的数量一样大,不是潜在的,但仍允许像实际数组一样快速访问

基本上我会使用List作为动态的例子,但是我会丢失固定数组的索引器访问权限,这样我就可以在不进行搜索的情况下快速访问和检索内容。

1 个答案:

答案 0 :(得分:8)

简短版本:

  • 如果您需要固定数量的商品,请使用Arrays
  • 如果您需要动态数量的项目,请使用List
  • 如果您想让每个人的眼睛流血,请使用ArrayLists

我总是建议使用List s。数组之间没有明显的性能差异,您具有IEnumerable的全部功能,并且它们是强类型的(因此您不使用ArrayList)。

可以使用带有索引号的List访问单个项目:

List<string> items = new List<string>();
string someItem = items[4]; //assuming these items already exist
items[5] = "asdf";

但是,选择使用哪种方式完全取决于您。您可以阅读ArraysListsArrayLists,然后从那里设计您的approch。