前言
数组存储多个相同类型的一种非常常用的数据结构。它长度是固定,也就是数组一旦创建大小就固定了。C# 数组不支持动态长度。那在C#中是否有方法可以调整数组大小呢?本文将通过示例介绍一种调整一维数组大小的方法。
方法
数组实例是从 System.Array 类继承类型的对象。我们可以使用 Array.Resize<T> 方法调整数组大小。此方法只允许我们将一维数组中的元素数量更改为指定的大小。
1、方法定义:
Resize 方法定义如下:
public static void Resize<T>(ref T[] array, int newSize);
T: 数组中元素的类型。
数组: 需调整大小的一维数组、基于零的数组,或为空以创建具有指定大小的新数组。
newSize: 调整后数组大小。
示例
我们通过一些例子,了解调整大小如何影响数组。
1、调大数组:
using System; namespace Fountain.WinConsole.OtherDemo { internal class Program { static void Main(string[] args) { // 定义数组 string[] carriers = { "ZTO", "SF", "YTO", "JT", "EMS", "YUNDA"}; // 输出 数组大小:6 Console.WriteLine("数组大小:{0}",carriers.Length); // 将数组调整为更大的大小 Array.Resize(ref carriers, carriers.Length+5); // 输出 调整后数组大小:11 Console.WriteLine("调整后数组大小:{0}", carriers.Length); // 任意键退出 Console.Read(); } } }
2、调小数组:
using System; namespace Fountain.WinConsole.OtherDemo { internal class Program { static void Main(string[] args) { // 定义数组 string[] carriers = { "ZTO", "SF", "YTO", "JT", "EMS", "YUNDA"}; // 输出 数组大小:6 Console.WriteLine("数组大小:{0}",carriers.Length); // 将数组调整为更大的大小 Array.Resize(ref carriers, 4); // 输出 调整后数组大小:4 Console.WriteLine("调整后数组大小:{0}", carriers.Length); // 输出 ZTO SF YTO JT for (int i = 0; i < carriers.Length; i++) { // 输出调正后的数组元素 Console.Write("{0} ", carriers[i]); } // 任意键退出 Console.Read(); } } }
事项
1、Array.Resize 方法分配指定大小的新数组,并将元素从原数组复制到新数组,然后再将原数组替换为新数组。
2、如果数组为空,则创建一个指定大小的新数组。
3、如果 newSize 大于原数组的长度,则分配一个新数组,并将原数组的所有元素复制到新数组。
4、如果 newSize 小于原数组的长度,则分配一个新数组,并将原数组元素填充到新数组,直到新数组被填充完,原数组中的其余元素会被忽略。