您目前已離線,請等候您的網際網路重新連線

如何使用 HashTable 集合在 Visual C# 中

重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。

按一下這裡查看此文章的英文版本:309357
本文章的有 Microsoft Visual Basic.NET] 版本請參閱 307933
結論
本文將逐步告訴您如何使用 HashTable 集合。因為雜湊不需要昂貴搜尋資料的擷取資料,您可以使用雜湊來有效地擷取資料。雜湊找不到資料的使用金鑰本身的值。

基底類別庫提供,以使您不需要程式碼的雜湊資料表,System.Collections 命名空間中定義的 HashTable 類別。

若要建置範例的步驟

HashTable 集合會儲存 索引鍵 (數值) 組,並使用 金鑰 雜湊和取得儲存位置。金鑰 是不變,而在 HashTable 中不能有重複的項目。這個範例使用簡單的 類別的幾個執行個體將儲存在 HashTable。最後一個名稱當作 索引鍵
  1. 開啟 Microsoft Visual Studio 並建立一個 Windows Form 應用程式專案在 Visual C# 中。Form1 是根據預設值加入至專案。
  2. 在 [方案總管] 中以滑鼠右鍵按一下專案名稱,並指向 [新增,然後按一下 [加入類別模組的 類別。類別 1 加入至專案上,根據預設值。
  3. 在 [類別 1] 模組中任何程式碼取代下列程式碼:
     public class Person{	public string Fname, Lname;	public Person(string FirstName, string LastName)	{		Fname = FirstName;		Lname = LastName;	}	public override string ToString()	{		return Fname + " " + Lname;	}}						
    人員] 類別有一個建構函式,[名字] 和 [姓氏] 使用參數,然後將這些參數指派給本機變數。ToString 函式中,會覆寫 ToString物件 類別來傳回 FnameLname 串連在一起。
  4. 建立表單層級 Hashtable 物件並宣告三個變數的型別 人員。將下列程式碼加入至 Form1 類別:
    <?xm-deletion_mark author="v-bobbid" time="20080711T172143-0800" data="private Hashtable MyTable = new Hashtable();		//For simplicity, create three Person objects to add to the HashTable collection.Person Person1,Person2,Person3; "?><?xm-insertion_mark_start author="v-bobbid" time="20080711T172143-0800"?>System.Collections.Hashtable MyTable = new System.Collections.Hashtable();//For simplicity, create three Person objects to add to the HashTable collection.Person Person1,Person2,Person3; <?xm-insertion_mark_end?>					
  5. 下列步驟中使用 [將三個 人員 物件新增至 Hashtabletry-catch 區塊中的 [Hashtable 物件的 Add 方法]。在 try-catch 區塊會攔截例外狀況,並顯示訊息,如果存在重複的索引鍵:
    1. 放置在 Form1 上的 按鈕 控制項,並將 文字 屬性變更為 新增項目
    2. 連按兩下按鈕以開啟其 [程式碼] 視窗,並將下列程式碼貼上 Button1_Click 事件:
      Person1 = new Person("David", "Burris");Person2 = new Person("Johnny", "Carrol");Person3 = new Person("Ji", "Jihuang");//The Add method takes Key as the first parameter and Value as the second parameter.try{        MyTable.Add(Person1.Lname, Person1);	MyTable.Add(Person2.Lname, Person2);	MyTable.Add(Person3.Lname, Person3);				}catch (ArgumentException ae){	MessageBox.Show("Duplicate Key");	MessageBox.Show(ae.Message);}						
  6. Hashtable 物件提供索引子。在下列步驟以存取儲存在雜湊位置的值的 索引鍵 的索引:
    1. 按鈕 控制項加入至 Form1,並將 名稱 屬性變更為 取得項目
    2. 按兩下該按鈕,並將下列程式碼貼上 Button2_Click 事件:
      //Use the indexer of the Hashtable class to retrieve your objects. The indexer takes //Key as a parameter and accesses it with the Hashed location.try{        MessageBox.Show(MyTable[Person1.Lname].ToString());	MessageBox.Show(MyTable[Person2.Lname].ToString());	MessageBox.Show(MyTable[Person3.Lname].ToString());}catch (NullReferenceException ex){	MessageBox.Show("Key not in Hashtable");	MessageBox.Show(ex.Message);} 						
  7. 在下列步驟使用 Remove 方法從 HashTable 集合移除單一項目:
    1. 按鈕 控制項加入至 Form1,並將 文字 屬性變更為 移除項目
    2. 按兩下該按鈕,並將下列程式碼貼上 Button3_Click 事件:
      <?xm-deletion_mark author="v-bobbid" time="20080711T173011-0800" data="if (MyTable.Count == 0) {	MessageBox.Show(&quot;There are no items in HashTable&quot;);}else{        MessageBox.Show(&quot;The count before removing an Item is&quot; + &quot; &quot; + MyTable.Count);        MessageBox.Show(&quot;Removing value stored at key value (Burris)&quot;);        Remove the object that is stored at the Key value Person1.Lname.        MyTable.Remove(Person1.Lname);}"?><?xm-insertion_mark_start author="v-bobbid" time="20080711T173011-0800"?>if (MyTable.Count == 0) {    MessageBox.Show("There are no items in HashTable");}else{        MessageBox.Show("The count before removing an Item is" + " " + MyTable.Count);        MessageBox.Show("Removing value stored at key value (Burris)");        // Remove the object that is stored at the Key value Person1.Lname.        MyTable.Remove(Person1.Lname);} <?xm-insertion_mark_end?>						
  8. 下列步驟中列舉儲存在 HashTable 集合中的項目:
    1. 按鈕 控制項加入至 Form1,並將 文字 屬性變更為 列舉
    2. 按兩下該按鈕,並將下列程式碼貼上 Button4_Click 事件:
      <?xm-deletion_mark author="v-bobbid" time="20080711T174252-0800" data="IDictionaryEnumerator Enumerator;if (MyTable.Count == 0)	MessageBox.Show(&quot;The hashtable is empty&quot;);else{	MessageBox.Show(&quot;Enumerating through the Hashtable collection&quot;);	Enumerator = MyTable.GetEnumerator();                while (Enumerator.MoveNext())	{	        MessageBox.Show(Enumerator.Value.ToString());	}}ICollection MyKeys;     if (MyTable.Count == 0)        MessageBox.Show(&quot;The hashtable is empty&quot;);else{       MessageBox.Show(&quot;Accessing keys property to return keys collection&quot;);       MyKeys = MyTable.Keys;       foreach (object Key in MyKeys)       {		MessageBox.Show(Key.ToString());       }								   } 							"?><?xm-insertion_mark_start author="v-bobbid" time="20080711T174252-0800"?>System.Collections.IDictionaryEnumerator Enumerator;if (MyTable.Count == 0)    MessageBox.Show("The hashtable is empty");else{    MessageBox.Show("Enumerating through the Hashtable collection");    Enumerator = MyTable.GetEnumerator();    while (Enumerator.MoveNext())    {        MessageBox.Show(Enumerator.Value.ToString());    }}System.Collections.ICollection MyKeys;if (MyTable.Count == 0)    MessageBox.Show("The hashtable is empty");else{    MessageBox.Show("Accessing keys property to return keys collection");    MyKeys = MyTable.Keys;    foreach (object Key in MyKeys)    {        MessageBox.Show(Key.ToString());    }}  <?xm-insertion_mark_end?>
      這個程式碼宣告 IDictionaryEnumerator 型別的變數,並呼叫 GetEnumerator 方法 HashTable 集合。列舉值 傳回,與程式碼列舉集合中項目,並使用 HashTable機碼 方法來列舉機碼。
  9. 在下列步驟使用 [清除] 方法來清除 HashTable
    1. 按鈕 控制項加入至 Form1,並將 文字 屬性變更為 清除
    2. 按兩下該按鈕,並將下列程式碼貼上 Button5_Click 事件:
      MyTable.Clear();      MessageBox.Show("HashTable is now empty");						
  10. 請依照下列步驟執行以建置並執行應用程式:
    1. 按一下 [新增項目。注意三個 人員 物件會加入至 HashTable 集合。
    2. 按一下 [取得的項目。請注意這個索引子會取得 HashTable 集合中的項目。其中三個新加入的項目會顯示。
    3. 按一下 [移除項目]。請注意在 Burris 」 索引鍵位置項目被刪除。
    4. 按一下 [列舉]。請注意 IDictionaryEnumerator 列舉經由 HashTable] 集合中項目 索引鍵 屬性的 [HashTable 傳回索引鍵集合。
    5. 按一下 [清除]。請注意所有項目會從 HashTable 集合清除。
附註範例公司、 組織、 產品、 網域名稱、 電子郵件地址、 標誌、 人員、 地方及此處所描述之事件均屬虛構。沒有與任何真實的公司、 組織、 產品、 網域名稱、 電子郵件地址、 標誌、 人員、 地方或事件是影射應該是。

警告:本文為自動翻譯

內容

文章識別碼:309357 - 最後檢閱時間:07/15/2008 16:45:58 - 修訂: 4.0

Microsoft Visual C# 2008 Express Edition, Microsoft Visual C# 2005, Microsoft Visual C++ .NET 2003 Standard Edition, Microsoft Visual C# .NET 2002 Standard Edition

  • kbmt kbhowtomaster KB309357 KbMtzh
意見反應