【问题标题】:C-sharp Arrays with Unity3d带有 Unity3d 的升 C 数组
【发布时间】:2023-03-19 03:07:01
【问题描述】:

我看到一些论坛帖子,有人说 Unity3D 中的数组不是真正的数组。好吧,我真的不明白。

我的第一个问题是如何将项目添加到数组中?是 Array.Push() 还是 Array.Add()?

我的第二个问题是如何从数组中清除项目?是 Array.Clear(arrname,0,arrname.Length) 吗?

我的第三个问题是int[]、string[]等数组,如何清除项目和添加项目?我没有找到任何真正的答案。

对不起,我的英语不好,我在这里提出了一些愚蠢的问题。我希望有人可以向我解释一下。谢谢。祝你愉快。

【问题讨论】:

  • 哪个论坛帖子声称 Unity3D 数组不是“真正的”数组?这听起来一开始就具有误导性 - 听起来你真的应该问最初发布的人他们的意思......
  • 什么是“真正的”数组?什么是非真实数组?有什么区别?
  • 您需要将您的问题归结为一个问题,最好不要问简单的问题,而这些问题的答案只需 google* 搜索即可 - 例如使用有据可查的课程喜欢Array。 (*其他搜索引擎可用。)

标签: c# arrays unity3d


【解决方案1】:

在 C# 中,您无论如何都不能更改数组的长度(通过添加/删除/清除项目);但你可以重新创建数组

  int[] array = new int[] {1, 2, 3};

  // Add item simulation
  int[] array = array.ToList().Add(4).ToArray();

  // Remove 2-nd item (that is 3) simulation
  int[] array = array.ToList().RemoveAt(2).ToArray();

  // Clear simulation: just an array recreation
  int[] array = new int[] {};

如果你想要一个数据结构,它看起来像数组,但允许你添加/删除/清除,List<T> 是你可以检查的第一件事: p>

  List<int> list = new List<int> {1, 2, 3};
  // Just add 
  list.Add(4);
  // ... remove
  list.RemoveAt(2);
  // and clear
  list.Clear();

【讨论】:

  • 不正确,您可以通过调用 Array.Resize(ref array, your_length); 来更改数组长度msdn.microsoft.com/en-us/library/bb348051(v=vs.110).aspx
  • 确实如此,Array.Resize 创建了一个新的 Array 并将旧数组的所有元素复制到新数组中,然后设置对新数组的引用。他对一个没有太多见地的问题给出了很好的深入回答。我不会对此投反对票。
  • 虽然答案很深入,但我认为这就是问题所在:就问题的性质而言,它太深入了。正如您所说,这在研究方式上并没有表现出太多。将数组转换为列表,向其中添加内容,然后返回数组(虽然是一种有效的方法)似乎并不能直接回答所提出的基本问题。正如 Mo Patel 所说,实际上有一个 Array.Resize 方法。
  • 即使不看问题和具体答案。答案是正确的,他说这不是因为这个原因而被否决。我想澄清这一点,然后甚至添加了另一个不反对这个答案的理由(这可能有点争议)
  • 感谢您的解释,可能是我尝试使用列表,因为它看起来像数组需要在添加项目之前第一次调整大小。
猜你喜欢
  • 2015-03-02
  • 2018-09-01
  • 2020-02-03
  • 2019-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-14
相关资源
最近更新 更多