0%

C# —集合(ArrayList、List、Dictionary)

ArrayList

它和陣列非常類似,它比陣列有彈性可以動態地增加ArrayList中的項目,陣列則不行。當需要一個資料結構可以動態新增或移除成員時便可使用ArrayList物件來記錄。使用前須引用命名空間

System.Collections

"photo"

陣列 vs 集合

陣列

  1. 透過索引值存取成員ex:arr[0]=123
  2. 無法變更陣列大小
  3. 若要儲存較多或較少成員時只能宣告新陣列
  4. 陣列中所有成員都必須是同一種資料型別

    因此陣列適合用來儲存固定個數、型別相同的資料

集合

  1. 可以動態新增或減少
  2. 透過索引值或健值存取成員

List <T>

  1. 具備索引值
  2. 可透過方法增加或減少成員
  3. 透過泛型指定成員型別

使用前一樣先使用它的命名空間

System.Collections.Generic

在宣告時將型別參數<T>設為自己想要的型別

"photo"

此外可用.Count來得到List的總數

List好用的method

  1. Sort() 排序

"photo"

  1. Contain() 檢查是否有物件x

"photo"

Dictionary

  1. 適合儲存具備鍵值的資料
  2. 可以透過方法增加或減少成員項目
  3. 透過泛型指定成員型別
1
Dictionary是一種索引鍵/值組(key/Value)成對的資料結過,透過Key找到對應的Value,特別注意使用Dictionary時需要傳兩個型別參數,代表Key跟Value,並且每個Key都必須是唯一的

"photo"

集合初始式

簡單來說就是宣告集合變數時順帶初始化集合成員可以使用兩種語法:

集合初始式與索引初始式,如此一來可以簡短程式碼

"photo"

最後小小補充一下 泛型Generic

在之前我們要宣告方法的話輸入跟輸出都必須是相同型別,那如果今天我想要輸入跟輸出的型別不同的話,就要定義多個方法,儘管他們做一樣的事情

泛型出現後,我們可以使用它定義一個方法,滿足不同參數類型,做相同的事情

1
先定義一個型別為<T>的方法,<T>為暫時替代型別,所以說我們可以先不用定義它是什麼型別,就可以完成class或method的設計

"photo"

1
定義型別的時間,延後到我們真正要使用它的時候才來定義

"photo"

參考及推薦:

小山的 C# 教學 - 第 49 課 - 串列 (List)

小山的 C# 教學 - 第 50 課 - 泛型 (Generics) 的初步介紹

文章若有錯誤或想交流,還不吝嗇給予指教哦