如果我对深度和浅层复制的理解是正确的,我的问题是不可能的。 如果你有一个数组(a [10])并执行浅拷贝(b [20])这不是不可能的,因为b中的数据不会是连续的吗?
如果我完全错了,有人会建议快速模仿(在c#中)c ++重新分配数组的能力。
注意
我正在查看System.Array对象的.Clone()和.Copy()成员。
答案 0 :(得分:4)
您无法调整现有阵列的大小,但是,您可以使用:
Array.Resize(ref arr, newSize);
这会分配一个新数组,将旧数组中的数据复制到新数组中,并更新arr
变量(在这种情况下由-ref传递)。这是你的意思吗?
但是,任何仍指向旧数组的其他引用都不会更新。更好的选择可能是使用List<T>
- 然后您不需要手动调整它,并且您没有过时引用的问题。您只需Add
/ Remove
等。通常,您不会经常直接使用数组。它们有它们的用途,但它们不是默认情况。
重新发表评论;
List<T>
没有框。这是关于仿制药的一点;在引擎盖下,List<T>
是T[]
的包装,因此List<int>
有一个int[]
- 没有拳击。较旧的ArrayList
是object[]
的包装,因此会框;当然,拳击isn't as bad as you might assume无论如何。Array.Resize
的运作; T
的大小,然后使用Buffer.BlockCopy
来显示内容List<T>
通常会更简单(并且更快,除非您基本上重新实现List<T>
备用容量以最小化调整大小的数量。)