iT邦幫忙

2026 iThome 鐵人賽

DAY 11
0
自我挑戰組

學習C#續系列 第 11 篇

Day 11:System.Collections.Generic 命名空間、索引鍵/值對集合、使用索引的集合、循序存取的集合

  • 分享至 

  • xImage
  •  

System.Collections.Generic 命名空間:

  • 提供一系列強型別、高效能且記憶體安全的集合類別。
  • 相比早期非泛型的 System.Collections,全面消除裝箱(Boxing)與拆箱(Unboxing),並在編譯期進行嚴格型別檢查。

索引鍵/值對集合(Key-Value Pair Collections):

  • 以 KeyValuePair<TKey, TValue> 形式儲存,核心代表為 Dictionary<TKey, TValue>。
  • 透過雜湊表(Hash Table)實作,以 Key 查 Value 的時間複雜度平均為 $O(1)$,效率極高。
  • 特性:Key 必須唯一且不可為 null,若加入重複 Key 會拋出例外;安全讀取建議使用 TryGetValue()。

使用索引的集合(Index-Based Collections):

  • 核心代表為 List,底層本質為動態陣列。
  • 具備索引子(Indexer)語法 list[i],支援以 0 為起點的整數索引快速隨機存取,讀取時間複雜度為 O(1)。
  • 適合頻繁隨機讀取、在末端追加元素的場景。

循序存取的集合(Sequential Access Collections):

  • 不支援透過整數索引隨機跳躍存取,必須遵循特定順序逐一取出:
  • Queue(佇列):先進先出(FIFO, First-In-First-Out)。主要方法:Enqueue()(入列)、Dequeue()(取出並移除)、Peek()(查看前端)。
  • Stack(堆疊):後進先出(LIFO, Last-In-First-Out)。主要方法:Push()(推入頂端)、Pop()(彈出並移除)、Peek()(查看頂端)。

實作範例:
https://ithelp.ithome.com.tw/upload/images/20260924/20178925QjzbEDWCUE.png

https://ithelp.ithome.com.tw/upload/images/20260924/20178925DseiqRzMvr.png

https://ithelp.ithome.com.tw/upload/images/20260924/20178925EecW5w8ZNa.png


上一篇
Day 10:泛型(Generics)
下一篇
Day 12:委派(Delegate)、委派與代理人、Lambda運算式(Lambda Expression)
系列文
學習C#續 共 21 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言