在C#中,Array.Resize<T>(ref T[] array, int newSize) 方法用于调整数组的大小。这个方法可以增大或缩小数组,并相应地复制现有元素到新的数组中。如果新数组的大小大于原数组,则新元素会被初始化为该类型的默认值(例如,对于引用类型,默认值是 null;对于数值类型,默认值是 0)。

以下是 Array.Resize 方法的一些关键点:

  1. 泛型方法Array.Resize 是一个泛型方法,这意味着我们可以为任何类型的数组调用它,而不需要进行类型转换。

  2. 引用传递:该方法通过引用传递数组(使用 ref 关键字),因此它会直接修改传入的数组变量,使其引用调整大小后的新数组。

  3. 复制元素:当数组大小改变时,Array.Resize 会自动复制现有元素到新的数组中。如果数组被缩小,那么多余的元素会被丢弃;如果数组被增大,则新元素会被初始化为默认值。

  4. 性能:由于数组在内存中是连续存储的,因此调整数组大小(特别是增大数组)可能需要分配新的内存块并将现有元素复制到新位置,这可能会是一个相对昂贵的操作。

  5. 异常:如果 newSize 小于0,或者对于非零长度的数组,newSize 等于0(尽管空数组可以调整为任何大小),则 Array.Resize 会抛出一个 ArgumentOutOfRangeException

下面是一个使用 Array.Resize 方法的示例:

int[] myArray = { 1, 2, 3, 4, 5 };

// 将数组大小调整为7
Array.Resize(ref myArray, 7);

// 现在 myArray 包含 { 1, 2, 3, 4, 5, 0, 0 }
// 新增的元素被初始化为 int 类型的默认值,即 0

// 将数组大小调整为3
Array.Resize(ref myArray, 3);

// 现在 myArray 包含 { 1, 2, 3 }
// 后两个元素被丢弃了

请注意,在调整数组大小后,任何引用原数组的变量(如果它们是通过赋值得到的,而不是通过引用传递的)都将继续引用原始的、未调整大小的数组。只有传递给 Array.Resize 方法的变量(在这个例子中是 myArray)会被更新以引用新的数组。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐