C#中數組與ArrayList的簡單使用


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)); //錯誤


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM