假設有一個規定長度的數組,如何擴容呢?最容易想到的是通過如下方式擴容:
class PRogram{static void Main(string[] args){int[] arrs = new[] {1, 2, 3, 4, 5};arrs[5] = 6;}}
報錯:未處理IndexOutOfRanageException,索引超出了數組界限。
□ 創建一個擴容的臨時數組,然后賦值給原數組,使用循環遍歷方式
static void Main(string[] args){int[] arrs = new[] {1, 2, 3, 4, 5};int[] temp = new int[arrs.Length + 1];//遍歷arrs數組,把該數組的元素全部賦值給temp數組for (int i = 0; i < arrs.Length; i++){temp[i] = arrs[i];}//把臨時數組賦值給原數組,這時原數組已經擴容arrs = temp;//給擴容后原數組的最后一個位置賦值arrs[arrs.Length - 1] = 6;foreach (var item in arrs){Console.WriteLine(item);}Console.ReadKey();}
□ 創建一個擴容的臨時數組,然后賦值給原數組,使用Array的靜態方法
像這種平常的數組間的拷貝,Array類肯定為我們準備了靜態方法:Array.Copy()。
static void Main(string[] args)
{
int[] arrs = new[] {1, 2, 3, 4, 5};
int[] temp = new int[arrs.Length + 1];
Array.Copy(arrs, temp, arrs.Length);
//把臨時數組賦值給原數組,這時原數組已經擴容
arrs = temp;
新聞熱點
疑難解答