首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Effective C# 原則 40:根據需求選擇集合 (中)

     編輯:關於C語言

多維陣列與交錯陣列的 foreach 差異

交錯陣列每層 foreach 產生邊界檢查程式碼;多維陣列單一 foreach 遍歷所有元素,JIT 會快取邊界並優化內層迴圈,效能優於手寫巢狀 for。

陣列無法動態調整大小

調整大小需建立新陣列並複製元素,導致現有參考指向舊陣列(過時資料)。ArrayList 封裝陣列並支援動態調整,內部參考指向自身,避免過時資料問題。

Queue、Stack 內部亦基於陣列

調整大小同樣有效能損失。建構式可指定初始容量(Queue 預設 32、Stack 10、ArrayList 0),預先配置可避免頻繁複製。

.NET 缺乏 LinkedList,替代方案

  • 頻繁增刪:使用 ListDictionary(單向鏈結串列實作)或 HybridDictionary(小量用 ListDictionary、大量轉 HashTable)。
  • 需控制順序:ArrayList 支援任意位置插入。

字典型集合:SortedList vs Hashtable

  • SortedList:依鍵排序,二分搜尋 O(log n),支援有序列舉。
  • Hashtable:雜湊查找 O(1),無序。

BitArray:位元操作專用

以 int[] 儲存位元(每 int 32 位),支援 AND/OR/XOR/NOT 批次操作,適合大量位元旗標;不宜替代一般布林陣列。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved