C#中數(shù)組擴(kuò)容的幾種方式介紹
假設(shè)有一個(gè)規(guī)定長(zhǎng)度的數(shù)組,如何擴(kuò)容呢?最容易想到的是通過(guò)如下方式擴(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ò)容
但是,拷貝來(lái)拷貝去顯得比較繁瑣,我們也可以使用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)將DataTable內(nèi)容輸出到Excel表格的方法
這篇文章主要介紹了C#實(shí)現(xiàn)將DataTable內(nèi)容輸出到Excel表格的方法,較為詳細(xì)的分析了C#基于DataTable保存Excel數(shù)據(jù)的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08
C# Soap調(diào)用WebService的實(shí)例
下面小編就為大家?guī)?lái)一篇C# Soap調(diào)WebService的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-12-12
使用C#實(shí)現(xiàn)阿拉伯?dāng)?shù)字到大寫中文的轉(zhuǎn)換
這篇文章主要介紹了C#實(shí)現(xiàn)阿拉伯?dāng)?shù)字轉(zhuǎn)為大寫中文的實(shí)現(xiàn)代碼,需要的朋友可以參考下2007-03-03
Unity中C#和Java的相互調(diào)用實(shí)例代碼
在unity中接入sdk或者定制一些功能時(shí),需要調(diào)用系統(tǒng)接口。安卓手機(jī)實(shí)際操作中,也就是Unity與android相互調(diào)用。我們?cè)赨nity中使用c#,android中使用java。2018-02-02
深入理解C#實(shí)現(xiàn)快捷鍵(系統(tǒng)熱鍵)響應(yīng)的方法
本篇文章是對(duì)使用C#實(shí)現(xiàn)快捷鍵(系統(tǒng)熱鍵)響應(yīng)的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05

