定義:可設置或檢索的字典鍵/值對。
命名空間: System.Collections
程序集: mscorlib(在 mscorlib.dll 中)
C# 語言中的 foreach 語句(在 Visual C++ 中為 for each,在 Visual Basic 中為 For Each)需要集合中每個元素的類型。由於 IDictionary 的每個元素都是一個鍵/值對,因此元素類型既不是鍵的類型,也不是值的類型。而是 DictionaryEntry 類型。
/*foreach 語句是對枚舉數的包裝,它只允許從集合中讀取,不允許寫入集合。*/
下面的示例演示如何使用 DictionaryEntry 來循環訪問 Hashtable 對象。
1 // A simple example for the DictionaryEntry structure. 2 using System; 3 using System.Collections; 4 5 class Example 6 { 7 public static void Main() 8 { 9 // Create a new hash table. 10 // 11 Hashtable openWith = new Hashtable(); 12 13 // Add some elements to the hash table. There are no 14 // duplicate keys, but some of the values are duplicates. 15 openWith.Add("txt", "notepad.exe"); 16 openWith.Add("bmp", "paint.exe"); 17 openWith.Add("dib", "paint.exe"); 18 openWith.Add("rtf", "wordpad.exe"); 19 20 // When you use foreach to enumerate hash table elements, 21 // the elements are retrieved as KeyValuePair objects. 22 Console.WriteLine(); 23 foreach (DictionaryEntry de in openWith) 24 { 25 Console.WriteLine("Key = {0}, Value = {1}", de.Key, de.Value); 26 } 27 } 28 } 29 30 /* This code example produces output similar to the following: 31 32 Key = rtf, Value = wordpad.exe 33 Key = txt, Value = notepad.exe 34 Key = dib, Value = paint.exe 35 Key = bmp, Value = paint.exe 36 */
表示鍵/值對的集合,這些鍵/值對根據鍵的哈希代碼進行組織。
每個元素是一個存儲在 DictionaryEntry 對象中的鍵/值對。鍵不能為空引用(Visual Basic 中為 Nothing),但值可以。
用作 Hashtable 中的鍵的對象必須實現或繼承 Object.GetHashCode 和 Object.Equals 方法。如果鍵相等性只是引用相等性,這些方法的繼承實現將滿足需要。此外,如果該鍵存在於 Hashtable 中,那么當使用相同參數調用這些方法時,這些方法必須生成相同的結果。只要鍵對象用作 Hashtable 中的鍵,它們就必須是永遠不變的。
當把某個元素添加到 Hashtable 時,將根據鍵的哈希代碼將該元素放入存儲桶中。該鍵的后續查找將使用鍵的哈希代碼只在一個特定存儲桶中搜索,這將大大減少為查找一個元素所需的鍵比較的次數。
Hashtable 的加載因子確定元素與存儲桶的最大比率。加載因子越小,平均查找速度越快,但消耗的內存也增加。默認的加載因子 1.0 通常提供速度和大小之間的最佳平衡。當創建 Hashtable 時,也可以指定其他加載因子。
當向 Hashtable 添加元素時,Hashtable 的實際加載因子將增加。當實際加載因子達到此加載因子時,Hashtable 中存儲桶的數目自動增加到大於當前 Hashtable 存儲桶數兩倍的最小質數。
Hashtable 中的每個鍵對象必須提供其自己的哈希函數,可通過調用 GetHash 訪問該函數。但是,可將任何實現 IHashCodeProvider 的對象傳遞到 Hashtable 構造函數,而且該哈希函數用於該表中的所有對象。
總之:DictionaryEntry就是鍵值對
Key是鍵
Value是值
Hashtable 內的每一組對象就是一個DictionaryEntry
例如我們要循環hashtable
foreach (DictionaryEntry de in myHashtable) {...}
Hashtable就是一個DictionaryEntry的集合
在一個Hashtable中
Key的值是不可以重復的,必須是唯一的,但Value的值可以是重復的
在查詢時,Key擔當索引的功能
支持版本
.NET Framework
受以下版本支持:3.5、3.0、2.0、1.1、1.0
.NET Compact Framework
受以下版本支持:3.5、2.0、1.0
XNA Framework
受以下版本支持:2.0、1.0