请解释 C# 中 Array.Resize 方法的用途,并说明它的行为特点。
考察说明
考查对 C# 数组动态调整大小机制的理解,以及该方法与重新分配数组的区别。
回答思路
- 【回答框架 1】Array.Resize 是 Array 类的静态方法,用于更改一维数组的元素数量(长度)。它接受一个 ref 参数,即数组引用本身,因此调用后原变量会指向新的数组实例。
- 【回答框架 2】该方法会分配一个具有新大小(由 newSize 指定)的新数组,将原数组的元素复制到新数组中(若新大小小于原长度,则截断多余元素;若大于,则用默认值填充新增元素),然后更新引用。
- 【回答框架 3】如果 newSize 等于原数组长度,则方法不执行任何操作,引用保持不变。如果传入的数组引用为 null,则该方法会创建一个指定大小的新数组。
- 【回答框架 4】需要注意的是,Array.Resize 实际上是一个 O(n) 操作,因为它涉及元素的复制。对于频繁调整大小的场景,建议使用 List<T> 等动态集合,它们内部使用更高效的扩容策略。
- 【关键点 1】Array.Resize 修改的是一维数组的长度,通过 ref 参数更新引用。
- 【关键点 2】新数组元素复制自原数组,超出部分为默认值。
- 【关键点 3】时间复杂度为 O(n),频繁调整应使用 List<T>。
- 【易错点 1】不要误以为 Array.Resize 是在原数组上就地扩容,实际是创建新数组。
- 【易错点 2】传参时必须使用 ref,否则修改不会生效。