C#中的數組【轉】
目錄
- 數組的聲明
- 數組的初始化
- 數組的訪問
- 數組的常用屬性和方法
為方便起見,以下數組均定義為整型
數組的聲明
C#聲明數組時,方括號[]必須跟在類型後面,而不是標識符後面
1. 聲明一維數組
C#數組的大小不是其類型的一部分,而在C語言中卻是數組類型的一部分
int[] mySigArray = new int[4]; //聲明數組類型,並使用new關鍵字為他分配內存空間
/*上述聲明可分解為以下兩步*/
int[] mySigArray; //聲明數組類型
mySigArray = new int[4]; //使用new關鍵字為他分配內存空間
另外C#聲明數組時支持分配內存的方括號內是整型變量或變量表達式,只要事先確定了變量的值即可(這個在C語言的C99標準出現之前是不允許的)
int[] mySigArray = new int[n]; //n的值必須事先確定,聲明之後即使改變n的值數組大小也不會變
2. 聲明多維數組
int[,] myMulArray = new int[4,3]; //聲明二維整型數組
3. 聲明鋸齒數組(數組的數組)
多維數組的大小是矩形的,例如3X3(也可以是是4×3,只需每行大小相同)個元素。而鋸齒數組的大小設置比較靈活,在鋸齒數組中,每一行都可以有不同的大小,如下圖,鋸齒數組成鋸齒狀
int[][] mySawArray = new int[3][]; //註意與二維數組不同,這裏有兩個方括號
數組的初始化
如果有初始化數據,可以用以下最簡單的形式初始化
int[] mySigArray = {1,2,3,4}; //一維數組初始化
int[,] myMulArray = {{1,2,3},{4,5,6},{7,8,9}}; //二維數組初始化
int[][] mySawArray = {new int[] {1,2},new int[] {3,4,5,6,7,8},new int[] {9,10,11}}; //鋸齒數組初始化
使用Array的Clear來初始化數組
byte[] tt = new byte[2147483591];
Array.Clear(tt, 0, tt.Length)
數組的訪問
1. 訪問上述初始化的的數組中單個元素
int i = mySigArray[2]; //i=3
int j = myMulArray[2,1]; //j=8
int k = mySawArray[2][1]; //k=10 註意二維數組與鋸齒數組的區別
2. 遍歷訪問數組元素
C#提供了foreach語句,該語句提供了一種簡單、明了的方法來循環訪問數組
foreach(int m in myArray) //將所有數組元素的值加1,myArray可以是一維、多維或鋸齒數組
{
m++;
}
另外也可以用for循環遍歷數組,使用這種方式可以更好的控制數組元素(知道每次循環中的數組對象是哪個),下面這段代碼用foreach語句是無法實現的
for (int i = 0; i< mySawArray.Length; i++)
{
for (int j = 0; j < mySawArray[i].Length; j++)
{
myMulArray[i,j]=mySawArray[i][j]; //把鋸齒數組的每個元素賦值給二維數組中相應的元素
}
}
數組的常用屬性和方法
在C#中,數組實際上是對象。System.Array是所有數組類型的抽象基類型,提供創建、操作、搜索和排序數組的方法,因此所有的數組都可以使用它的屬性和方法
1. 常用屬性
Length:獲得一個32位整數,該整數表示Array的所有維數中元素的總數,即數組的元素個數,常用來限制數組下標的大小
2. 常用方法
2.1 數組的復制
在C#中,數組的復制一般分為以下三種:
int[] pins = {3,9,7,2};
int[] copy1 = new int[pins.Length];
pins.CopyTo(copy1,0); //使用數組對象的CopyTo()方法進行復制,參數0表示從copy1數組的第一個元素(下標是0)開始放置從pins數組復制過來的值
int[] copy2 = new int[pins.Length];
Array.Copy(pins,copy2,copy2.Length); //使用Array類的一個靜態方法Copy(),參數copy2.Length表示從pins數組的第一個元素開始到copy2數組所能容納的最後一個元素(copy2.Length)都復制到copy2數組
int[] copy3 = (int[])pins.Clone(); //使用數組對象的Clone()方法,它會創建一個新的數組,返回值是一個對象,所以需要強制類型轉換成恰當的類型
2.2 數組的排序
排序是編程中常用的算法之一。C#中提供了兩個數組排序的方法:
Array.Sort(Array)用於對數組進行從小到大排序
Array.Reverse(Array)用於對數組進行反向排序
int[] pins = {3,9,7,2};
Array.Sort(pins); //pins={2,3,7,9}
Array.Reverse(pins); //pins={9,7,3,2}
C#中的數組【轉】