C#中數(shù)組擴(kuò)容的幾種方式介紹
假設(shè)有一個(gè)規(guī)定長(zhǎng)度的數(shù)組,如何擴(kuò)容呢?最容易想到的是通過如下方式擴(kuò)容:
class Program { static void Main(string[] args) { int[] arrs = new[] {1, 2, 3, 4, 5}; arrs[5] = 6; } }
報(bào)錯(cuò):未處理IndexOutOfRanageException,索引超出了數(shù)組界限。
創(chuàng)建一個(gè)擴(kuò)容的臨時(shí)數(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ù)組,這時(shí)原數(shù)組已經(jīng)擴(kuò)容 arrs = temp; //給擴(kuò)容后原數(shù)組的最后一個(gè)位置賦值 arrs[arrs.Length - 1] = 6; foreach (var item in arrs) { Console.WriteLine(item); } Console.ReadKey(); }
創(chuàng)建一個(gè)擴(kuò)容的臨時(shí)數(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ù)組,這時(shí)原數(shù)組已經(jīng)擴(kuò)容 arrs = temp; //給擴(kuò)容后原數(shù)組的最后一個(gè)位置賦值 arrs[arrs.Length - 1] = 6; foreach (var item in arrs) { Console.WriteLine(item); } Console.ReadKey(); }
使用Array的靜態(tài)方法擴(kuò)容
但是,拷貝來拷貝去顯得比較繁瑣,我們也可以使用Array.Resize()方法給數(shù)組擴(kuò)容。
static void Main(string[] args) { int[] arrs = new[] {1, 2, 3, 4, 5}; Array.Resize(ref arrs, arrs.Length + 1); //給擴(kuò)容后原數(shù)組的最后一個(gè)位置賦值 arrs[arrs.Length - 1] = 6; foreach (var item in arrs) { Console.WriteLine(item); } Console.ReadKey(); }
總結(jié):數(shù)組擴(kuò)容優(yōu)先考慮使用Array的靜態(tài)方法Resize,其次考慮把一個(gè)擴(kuò)容的、臨時(shí)的數(shù)組賦值給原數(shù)組。
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
- C#常用數(shù)據(jù)結(jié)構(gòu)之?dāng)?shù)組Array
- C#操作Byte數(shù)組和十六進(jìn)制進(jìn)行互轉(zhuǎn)
- C#實(shí)現(xiàn)數(shù)組元素的數(shù)據(jù)類型轉(zhuǎn)換方法詳解
- C#中的小數(shù)和百分?jǐn)?shù)計(jì)算與byte數(shù)組操作
- C#集合之位數(shù)組的用法
- C#中的數(shù)組用法詳解
- C#中多維數(shù)組[,]和交錯(cuò)數(shù)組[][]的區(qū)別
- C#中獲取二維數(shù)組的行數(shù)和列數(shù)以及多維數(shù)組各個(gè)維度的長(zhǎng)度
- 淺談C#數(shù)組(二)
- 淺談C#數(shù)組(一)
相關(guān)文章
C#實(shí)現(xiàn)將網(wǎng)頁保存成圖片的網(wǎng)頁拍照功能
這篇文章主要介紹了C#實(shí)現(xiàn)將網(wǎng)頁保存成圖片的網(wǎng)頁拍照功能,很實(shí)用的一個(gè)功能,需要的朋友可以參考下2014-07-07c# Newtonsoft 六個(gè)值得使用的特性(上)
這篇文章主要介紹了c# Newtonsoft 六個(gè)值得使用的特性,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-06-06C#預(yù)處理指令之#line,#pragma warning 詳細(xì)解析
#line 指令可能由生成過程中的自動(dòng)中間步驟使用。例如,如果行從原始的源代碼文件中移除,但是您仍希望編譯器基于文件中的原始行號(hào)生成輸出,則可以移除行,然后用 #line 模擬原始行號(hào)2014-01-01C#中DataTable 轉(zhuǎn)換為 Json的方法匯總(三種方法)
JavaScript Object Notation (Json)是一種輕量級(jí)的數(shù)據(jù)交換格式,下面小編給大家介紹三種方法實(shí)現(xiàn)DataTable轉(zhuǎn)換成 Json 對(duì)象,感興趣的朋友一起看看吧2016-11-11