比較表

 CollectionDictionaryCollection<T>Dictionary<T,U>
基本型ArrayListHashtableList<T>Dictionary<T,U>
字串型別StringCollectionStringDictionary :1 key -> 1 value <br> NameValueCollection :1 key -> n valueList<T>Dictionary<T,U>
Bool型別BitArray   
連續型的Stack :LIFO <br> Queue :FIFO Stack<T> <br> Queue<T> 
item 順序 SortedList :順序依 key 值自動排序 <br> OrderedDictionary :順序維持加入的順序 SortedList<T,U> <br> SortedDictionaryt<T,U> <br> Dictionary<T,U>
存取效能 ListDictionary :適合項目小於 10 個的集合。 <br> HybridDictionary :項目無法預期時,這個類別會自動調整。 Dictionary<T,U>

集合關係圖

| System.Collections<br> <ul id=’TreeMenuView1’ class=’filetree treeview’> <li><a target=”_blank” href=”http://msdn.microsoft.com/zh-tw/library/system.collections.icomparer.aspx”><span class=’folder interface’>IComparer</span></a> </li> <li><a target=”_blank” href=”http://msdn.microsoft.com/zh-tw/library/system.collections.ienumerator.aspx”><span class=’folder interface’>IEnumerator</span></a> </li> <li><a target=”_blank” href=”http://msdn.microsoft.com/zh-tw/library/system.collections.ienumerable.aspx”><span class=’folder interface’>IEnumerable</span></a> <ul> <li><a target=”_blank” href=”http://msdn.microsoft.com/zh-tw/library/system.collections.icollection.aspx”><span class=’folder interface’>ICollection</span></a> <ul> <li><a target=”_blank” href=”http://msdn.microsoft.com/zh-tw/library/system.collections.idictionary.aspx”><span class=’folder interface’>IDictionary</span></a> <ul> <li><a target=”_blank” href=”http://msdn.microsoft.com/zh-tw/library/system.collections.hashtable.aspx”><span class=’file class’>Hashtable</span></a> </li> <li><a target=”_blank” href=”http://msdn.microsoft.com/zh-tw/library/system.collections.sortedlist.aspx”><span class=’file class’>SortedList</span></a> </li> <li><a target=”_blank” href=”http://msdn.microsoft.com/zh-tw/library/system.collections.specialized.listdictionary”><span class=’file class’>ListDictionary (Specialized)</span></a> </li> <li><a target=”_blank” href=”http://msdn.microsoft.com/zh-tw/library/system.collections.specialized.hybriddictionary”><span class=’file class’>HybridDictionary (Specialized)</span></a> </li> <li><a target=”_blank” href=”http://msdn.microsoft.com/zh-tw/library/system.collections.specialized.iordereddictionary.aspx”><span class=’folder interface’>IOrderedDictionary</span></a> <ul> <li><a target=”_blank” href=”http://msdn.microsoft.com/zh-tw/library/system.collections.specialized.ordereddictionary”><span class=’file class’>OrderedDictionary (Specialized)</span></a> </li> </ul> </li> </ul> </li> <li><a target=”_blank” href=”http://msdn.microsoft.com/zh-tw/library/system.collections.ilist.aspx”><span class=’folder interface’>IList</span></a> <ul> <li><a target=”_blank” href=”http://msdn.microsoft.com/zh-tw/library/system.collections.arraylist.aspx”><span class=’file class’>ArrayList</span></a> </li> <li><a target=”_blank” href=”http://msdn.microsoft.com/zh-tw/library/system.collections.specialized.stringcollection.aspx”><span class=’file class’>StringCollection (Specialized)</span></a> </li> </ul> </li> <li><a target=”_blank” href=”http://msdn.microsoft.com/zh-tw/library/system.collections.bitarray.aspx”><span class=’file class’>BitArray</span></a> </li> <li><a target=”_blank” href=”http://msdn.microsoft.com/zh-tw/library/system.collections.queue.aspx”><span class=’file class’>Queue</span></a> </li> <li><a target=”_blank” href=”http://msdn.microsoft.com/zh-tw/library/system.collections.stack.aspx”><span class=’file class’>Stack</span></a> </li> <li><a target=”_blank” href=”http://msdn.microsoft.com/zh-tw/library/system.collections.specialized.namevaluecollection.aspx”><span class=’file class’>NameValueCollection (Specialized)</span></a> </li> </ul> </li> <li><a target=”_blank” href=”http://msdn.microsoft.com/zh-tw/library/system.collections.specialized.stringdictionary.aspx”><span class=’file class’>StringDictionary (Specialized)</span></a> </li> </ul> </li> </ul> | System.Collections.Generic<br> <ul id=’TreeMenuView2’ class=’filetree treeview’> <li><a target=’_blank’ href=’http://msdn.microsoft.com/zh-tw/library/8ehhxeaf’><span class=’folder interface’>IComparer<T></span></a> </li> <li><a target=’_blank’ href=’http://msdn.microsoft.com/zh-tw/library/78dfe2yb’><span class=’folder interface’>IEnumerator<T></span></a> </li> <li><a target=’_blank’ href=’http://msdn.microsoft.com/zh-tw/library/9eekhta0’><span class=’folder interface’>IEnumerable<T></span></a> <ul> <li><a target=’_blank’ href=’http://msdn.microsoft.com/zh-tw/library/8ehhxeaf’><span class=’folder interface’>ICollection<T></span></a> <ul> <li><a target=’_blank’ href=’http://msdn.microsoft.com/zh-tw/library/s4ys34ea’><span class=’folder interface’>IDictionary<T,U></span></a> <ul> <li><a target=’_blank’ href=’http://msdn.microsoft.com/zh-tw/library/xfhwa508’><span class=’file class’>Dictionary<T,U></span></a> </li> <li><a target=’_blank’ href=’http://msdn.microsoft.com/zh-tw/library/he2s3bh7’><span class=’file class’>LinkedList<T></span></a> </li> <li><a target=’_blank’ href=’http://msdn.microsoft.com/zh-tw/library/f7fta44c’><span class=’file class’>SortedDictionary<T,U></span></a> </li> </ul> </li> <li><a target=’_blank’ href=’http://msdn.microsoft.com/zh-tw/library/5y536ey6’><span class=’folder interface’>IList<T></span></a> <ul> <li><a target=’_blank’ href=’http://msdn.microsoft.com/zh-tw/library/6sh2ey19’><span class=’file class’>List<T></span></a> </li> </ul> </li> <li><a target=’_blank’ href=’http://msdn.microsoft.com/zh-tw/library/7977ey2c’><span class=’file class’>Queue<T></span></a> </li> <li><a target=’_blank’ href=’http://msdn.microsoft.com/zh-tw/library/3278tedw’><span class=’file class’>Stack<T></span></a> </li> </ul> </li> </ul> </li> </ul> | | — | — |

集合與泛型集合對照表

以下三個型別的集合,都不會保留項目的順序,而且列舉集合時不保證以特定順序列出。

| | Hashtable | StringDictionary | NameValueCollection | | — | — | — | — | | foreach | c# Hashtable myCol = new Hashtable();<br><br>myCol.Add("111", "apple");<br>myCol.Add("333", "book");<br>myCol.Add("222", "cherry");<br>myCol.Add("444", "dog");<br>//myCol.Add("444", "egg"); disallow duplicate key<br><br>foreach (DictionaryEntry item in myCol)<br>{<br> Console.WriteLine("{0} {1}", item.Key, item.Value);<br>}<br>//222 cherry<br>//444 dog<br>//111 apple<br>//333 book<br> | c# StringDictionary myCol = new StringDictionary();<br><br>myCol.Add("111", "apple");<br>myCol.Add("333", "book");<br>myCol.Add("222", "cherry");<br>myCol.Add("444", "dog");<br>//myCol.Add("444", "egg"); disallow duplicate key<br><br>foreach (DictionaryEntry item in myCol)<br>{<br> Console.WriteLine("{0} {1}", item.Key, item.Value);<br>}<br>//222 cherry<br>//444 dog<br>//111 apple<br>//333 book<br> | c# NameValueCollection myCol = new NameValueCollection();<br><br>myCol.Add("111", "apple");<br>myCol.Add("333", "book");<br>myCol.Add("222", "cherry");<br>myCol.Add("444", "dog");<br>myCol.Add("444", "egg");<br><br>foreach (string key in myCol)<br>{<br> Console.WriteLine("{0} {1}", key, myCol[key]);<br>}<br>//111 apple<br>//333 book<br>//222 cherry<br>//444 dog,egg<br> | | IEnumerator | c# IEnumerator myEnumerator = myCol.GetEnumerator();<br>DictionaryEntry de;<br>while (myEnumerator.MoveNext())<br>{<br> de = (DictionaryEntry)myEnumerator.Current;<br> Console.WriteLine("{0} {1}", de.Key, de.Value);<br>}<br> | c# IEnumerator myEnumerator = myCol.GetEnumerator();<br>DictionaryEntry de;<br>while (myEnumerator.MoveNext())<br>{<br> de = (DictionaryEntry)myEnumerator.Current;<br> Console.WriteLine("{0} {1}", de.Key, de.Value);<br>}<br> | c# IEnumerator myEnumerator = myCol.GetEnumerator();<br>DictionaryEntry de;<br>while (myEnumerator.MoveNext())<br>{<br> de = (DictionaryEntry)myEnumerator.Current;<br> Console.WriteLine("{0} {1}", de.Key, de.Value);<br>}<br> | | foreach key | c# foreach (var key in myCol.Keys)<br>{<br> Console.WriteLine("{0}", key);<br>}<br><br>foreach (var value in myCol.Values)<br>{<br> Console.WriteLine("{0}", value);<br>}<br> | c# foreach (var key in myCol.Keys)<br>{<br> Console.WriteLine("{0}", key);<br>}<br><br>foreach (var value in myCol.Values)<br>{<br> Console.WriteLine("{0}", value);<br>}<br> | c# //Print Keys And Values<br>foreach (string key in myCol.AllKeys)<br>{<br> Console.WriteLine("{0} {1}", key, myCol[key]);<br>}<br>//111 apple<br>//333 book<br>//222 cherry<br>//444 dog,egg<br> | | index | c# 不支援<br> | c# 不支援<br> | c# for (int i = 0; i < myCol.Count; i++)<br>{<br> // myCol[i] = myCol.Get(i) = myCol[myCol.GetKey(i)]<br><br> Console.WriteLine("{0} {1}", myCol.GetKey(i), myCol[i]);<br> Console.WriteLine("{0} {1}", myCol.GetKey(i), myCol.Get(i));<br> Console.WriteLine("{0} {1}", myCol.GetKey(i), myCol[myCol.GetKey(i)]);<br>}<br>// 使用 myCol[i] , 回傳的是該項目的 value<br>//111 apple<br>//333 book<br>//222 cherry<br>//444 dog,egg<br> |