1. 多維數組
多維數組:行數和列數在定義時已確定
string[,] arr = new string[2, 3]; arr[0, 0] = "坐標:1-1"; arr[0, 1] = "坐標:1-2"; arr[0, 2] = "坐標:1-3"; arr[1, 0] = "坐標:2-1"; arr[1, 1] = "坐標:2-2"; arr[1, 2] = "坐標:2-3"; int m = arr.GetLength(0); // 行數 int n = arr.GetLength(1); // 列數 StringBuilder str = new StringBuilder(); // 類似於String類型變量 for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { str.Append(arr[i, j] + " "); } } Console.WriteLine(str.ToString());
2. 鋸齒數組
鋸齒數組:行數確定,列數不定,數組里套數組。
int[][] arr = new int[3][]; arr[0] = new int[] { 1, 2, 3, 4 }; arr[1] = new int[] { 100 }; arr[2] = new int[] { 10, 20, 30 }; foreach (int[] i in arr) { foreach (int x in i) { Console.WriteLine(x); // 遍歷所有元素 } } Console.WriteLine(arr[2][2]); // 訪問單一元素,注意和多維素組的差別,會輸出30
3. 數組的常用操作
- arr.Length屬性:數組中元素個數;
- arr.GetLength(n):獲取數組arr第n維元素的個數;
- arr.Rank:獲取數組arr的維數;
①克隆數組,就是復制一份新的
int[] arr = new int[] { 1, 2, 3, 4}; int[] arr2 = (int[])arr.Clone(); for (int i = 0; i < arr2.Length; i++) { Console.Write(arr2[i]); }
4. ArrayList
命名空間:using System.Collections;
ArrayList就是傳說中的動態數組,它可以動態的增加和減少元素,另外它可以存儲任意個數和任意類型的元素。
屬性
- Count屬性是目前ArrayList包含的元素的數量,這個屬性是只讀的
- Capacity屬性是目前ArrayList能夠包含的最大數量,可以手動的設置這個屬性,但是當設置為小於Count值的時候會引發一個異常。
方法
- Add(v):添加一個元素(參數v,任何類型)到當前列表的末尾
- AddRange方法用於添加一批元素到當前列表的末尾
- Remove方法用於刪除一個元素,通過元素本身的引用來刪除
- RemoveAt(i):方法用於刪除一個元素,通過索引值(參數i)來刪除
- RemoveRange用於刪除一批元素,通過指定開始的索引和刪除的數量來刪除
- Insert用於添加一個元素到指定位置,列表后面的元素依次往后移動
- InsertRange用於從指定位置開始添加一批元素,列表后面的元素依次往后移動
- Clear():方法用於清除現有所有的元素
- Contains(v):方法用來查找某個對象(參數v)在不在列表之中
- ToArray(Type t):這個方法把ArrayList的元素Copy到一個新的數組中,參數為Type類型
① 簡單使用
ArrayList list = new ArrayList(); // 聲明變量 list.Add(2); list.Add("北京"); list.Add(new int[] { 2, 4, 6 }); list.Add("南京"); list.Add(3); foreach (var p in list) { Console.Write(p.ToString() + " | "); // 輸出:2 | 北京 | System.Int32[] | 南京 | 3 | }
② ArrayList與數組轉換
元素類型相同的轉換
ArrayList list = new ArrayList(); list.Add(1); list.Add(2); list.Add(3); // 轉換方式1:ToArray() int[] list2 = (int[])list.ToArray(typeof(int)); // 轉換方式2:CopyTo() int[] list3 = new int[list.Count]; list.CopyTo(list3);
元素類型不同的轉換
ArrayList arr = new ArrayList(){ "北京", 1}; //往數組中添加不同類型的元素 object[] arr2 = (object[])arr.ToArray(typeof(object)); //正確 string[] arr3 = (string[])arr.ToArray(typeof(string)); //錯誤