C#中數(shù)組擴容的幾種方式介紹
假設(shè)有一個規(guī)定長度的數(shù)組,如何擴容呢?最容易想到的是通過如下方式擴容:
class Program
{
static void Main(string[] args)
{
int[] arrs = new[] {1, 2, 3, 4, 5};
arrs[5] = 6;
}
}報錯:未處理IndexOutOfRanageException,索引超出了數(shù)組界限。
創(chuàng)建一個擴容的臨時數(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)擴容
arrs = temp;
//給擴容后原數(shù)組的最后一個位置賦值
arrs[arrs.Length - 1] = 6;
foreach (var item in arrs)
{
Console.WriteLine(item);
}
Console.ReadKey();
}創(chuàng)建一個擴容的臨時數(shù)組,然后賦值給原數(shù)組,使用Array的靜態(tài)方法
像這種平常的數(shù)組間的拷貝,Array類肯定為我們準備了靜態(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)擴容
arrs = temp;
//給擴容后原數(shù)組的最后一個位置賦值
arrs[arrs.Length - 1] = 6;
foreach (var item in arrs)
{
Console.WriteLine(item);
}
Console.ReadKey();
}使用Array的靜態(tài)方法擴容
但是,拷貝來拷貝去顯得比較繁瑣,我們也可以使用Array.Resize()方法給數(shù)組擴容。
static void Main(string[] args)
{
int[] arrs = new[] {1, 2, 3, 4, 5};
Array.Resize(ref arrs, arrs.Length + 1);
//給擴容后原數(shù)組的最后一個位置賦值
arrs[arrs.Length - 1] = 6;
foreach (var item in arrs)
{
Console.WriteLine(item);
}
Console.ReadKey();
}總結(jié):數(shù)組擴容優(yōu)先考慮使用Array的靜態(tài)方法Resize,其次考慮把一個擴容的、臨時的數(shù)組賦值給原數(shù)組。
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
相關(guān)文章
C#實現(xiàn)將DataTable內(nèi)容輸出到Excel表格的方法
這篇文章主要介紹了C#實現(xiàn)將DataTable內(nèi)容輸出到Excel表格的方法,較為詳細的分析了C#基于DataTable保存Excel數(shù)據(jù)的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-08-08
使用C#實現(xiàn)阿拉伯數(shù)字到大寫中文的轉(zhuǎn)換
這篇文章主要介紹了C#實現(xiàn)阿拉伯數(shù)字轉(zhuǎn)為大寫中文的實現(xiàn)代碼,需要的朋友可以參考下2007-03-03
深入理解C#實現(xiàn)快捷鍵(系統(tǒng)熱鍵)響應(yīng)的方法
本篇文章是對使用C#實現(xiàn)快捷鍵(系統(tǒng)熱鍵)響應(yīng)的方法進行了詳細的分析介紹,需要的朋友參考下2013-05-05

