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