什麼是數組?
數組是一種數據結構,包含同一個類型的多個元素。
數組的聲明:
int[] myIntArray;
注:聲明數組時,方括號 ([]) 必須跟在類型後面,而不是變量名後面。在 C# 中,將方括號放在變量名後是不合法的語法。
數組的初始化:
我們知道數組是引用類型,所以需要給他分配堆上的內存。
1.myIntArray = new int[3];
2.myIntArray = new int[] { 1, 2, 3 };
3.int[] myIntArray = { 1, 2, 3 }; //當使用這種方法對數組進行初始化時,只能在聲明變量數組時使用,不能在聲明數組之後使用。
數組的訪問:
數組在聲明和初始化後,可以使用索引器進行訪問,索引器總是以0開頭,表示第一個元素。
int[] myIntArray = { 1, 2, 3 }; Console.WriteLine("intValue = {0}", myIntArray[0]); Console.Read();
結果為:intValue = 1
數組的類型:
1.多維數組:
一般的數組(也稱一維數組)用一個整數來索引,多維數組用兩個或多個整數來索引。
static void Main(string[] args) { //聲明一個二維數組 兩行三列 int[,] myIntArray1; myIntArray1 = new int[2, 3]; myIntArray1[0, 0] = 1; myIntArray1[0, 1] = 11; myIntArray1[0, 2] = 111; myIntArray1[1, 0] = 2; myIntArray1[1, 1] = 22; myIntArray1[1, 2] = 222; //等同於 int[,] myIntArray1 = { { 1,11,111}, { 2,22,222} }; Console.WriteLine("{0},{1},{2}", myIntArray1[0, 0], myIntArray1[0, 1], myIntArray1[0, 2]); Console.WriteLine("{0},{1},{2}", myIntArray1[1, 0], myIntArray1[1, 1], myIntArray1[1, 2]); Console.Read(); }
結果為:
static void Main(string[] args) { //聲明一個二維數組 三行三列 int[,] myIntArray2; myIntArray2 = new int[,] { { 1, 11, 111 }, { 2, 22, 222 }, { 3, 33, 333 }, { 4, 44, 444 } }; Console.WriteLine("{0},{1},{2}", myIntArray2[0, 0], myIntArray2[0, 1], myIntArray2[0, 2]); Console.WriteLine("{0},{1},{2}", myIntArray2[1, 0], myIntArray2[1, 1], myIntArray2[1, 2]); Console.WriteLine("{0},{1},{2}", myIntArray2[2, 0], myIntArray2[2, 1], myIntArray2[2, 2]); Console.WriteLine("{0},{1},{2}", myIntArray2[3, 0], myIntArray2[3, 1], myIntArray2[3, 2]); Console.Read(); }
結果為:
static void Main(string[] args) { //聲明一個三維數組 三行三列 int[, ,] myIntArray3; myIntArray3 = new int[,,] { { {1,1}, {11,11}, {111,111} }, { {2,2}, {22,22}, {222,222} }, { {3,3}, {33,33}, {333,333} }, { {4,4}, {44,44}, {444,444} } }; Console.WriteLine("{0},{1},{2},{3},{4},{5}", myIntArray3[0, 0, 0], myIntArray3[0, 0, 1], myIntArray3[0, 1, 0], myIntArray3[0, 1, 1], myIntArray3[0, 2, 0], myIntArray3[0, 2, 1]); Console.WriteLine("{0},{1},{2},{3},{4},{5}", myIntArray3[1, 0, 0], myIntArray3[1, 0, 1], myIntArray3[1, 1, 0], myIntArray3[1, 1, 1], myIntArray3[1, 2, 0], myIntArray3[1, 2, 1]); Console.WriteLine("{0},{1},{2},{3},{4},{5}", myIntArray3[2, 0, 0], myIntArray3[2, 0, 1], myIntArray3[2, 1, 0], myIntArray3[2, 1, 1], myIntArray3[2, 2, 0], myIntArray3[2, 2, 1]); Console.WriteLine("{0},{1},{2},{3},{4},{5}", myIntArray3[3, 0, 0], myIntArray3[3, 0, 1], myIntArray3[3, 1, 0], myIntArray3[3, 1, 1], myIntArray3[3, 2, 0], myIntArray3[3, 2, 1]); Console.Read(); }
結果為:
2.鋸齒數組:
一般多維數組的大小是矩形的,而鋸齒數組的大小比較靈活,每一行都可以有不同的大小。
在初始化鋸齒數組時,先設置該數組包含的行數。定義各行中元素個數的第二個括號設置為空,因為這類數組的每一行包含不同的元素數。
static void Main(string[] args) { //聲明一個鋸齒數組 三行 int[][] myIntArray4; myIntArray4 = new int[3][]; myIntArray4[0] = new int[] { 1,11,111}; myIntArray4[1] = new int[2] { 2, 22 }; myIntArray4[2] = new int[] { 3,33,333,3333}; for (int i = 0; i < myIntArray4.Length; i++) { for (int j = 0; j < myIntArray4[i].Length; j++) { Console.WriteLine("{0}",myIntArray4[i][j]); } } Console.Read(); }
結果為: