Ako pracovať s HashTable zber v Visual C#

Preklady článku Preklady článku
ID článku: 309357 - Zobraziť produkty, ktorých sa tento článok týka.
Pre Microsoft Visual Basic.ČISTÁ verziu tohto článku, pozri 307933.
Rozbaliť všetko | Zbaliť všetko

Na tejto stránke

SUHRN

V tomto článku vám ukáže, ako používať HashTable zberu. Pretože hashing odstraňuje nutnosť pre nákladné vyhľadávanie údajov načítať údaje, môžete použiť hashing efektívne načítať údaje. Hodnotu kľúč sám o sebe hashing používa na vyhľadanie údajov.

Trieda knižnice Base ponúknuť HashTable trieda, ktorá je definovaná v System.Collections priestor názvov tak, že nie sú povinné kód vlastné hašovacie tabuľky.

Kroky na vybudovanie vzorky

Kolekcia HashTable ukladá (Kľúč, hodnota) dvojica a použitie Kľúč hash a získať miesto na ukladanie. V Kľúč je nemenná a nemôžete mať duplicitné položky HashTable. Táto vzorka používa viacero inštancií jednoduchý Osoba Trieda skladovať v HashTable. Priezvisko a meno sa používa ako Kľúč.
  1. Otvorte program Microsoft Visual Studio a vytvorte Windows formulárov aplikácie projektu v Visual C#. Form1 sa predvolene pridá do projektu.
  2. V roztoku Prieskumník kliknite pravým tlačidlom na názov projektu, ukážte na Pridať, a potom kliknite na tlačidlo Trieda Ak chcete pridať modul triedy. Class1 sa predvolene pridá do projektu.
  3. Nahraďte ľubovoľného kódu v Class1 module nasledujúci kód:
     public class Person
    {
    	public string Fname, Lname;
    
    	public Person(string FirstName, string LastName)
    	{
    		Fname = FirstName;
    		Lname = LastName;
    	}
    
    	public override string ToString()
    	{
    		return Fname + " " + Lname;
    	}
    }
    						
    V Osoba trieda má jeden konštruktéra, ktorá trvá KrstnéMeno a Priezvisko parametre a priradí tieto parametre lokálne premenné. V ToString Funkcia prepíše ToString z Objekt Trieda vrátiť Fname a Lname reťazové spolu.
  4. Vytvoriť formulár úroveň Hashtable objekt a vyhlásiť tri premenné typu Osoba. Do triedy Form1, pridajte nasledujúci kód:
    <?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. V nasledujúcich krokoch, použite Pridať metóda Hashtable objekt pridať tri Osoba objekty na Hashtable v Skúste vedľajšieho úlovku blok. V Skúste vedľajšieho úlovku blok úlovky výnimkou a zobrazí správu, ak existujú duplicitné kľúče:
    1. Miesto Tlačidlo kontroly na Form1 a zmeniť Text Vlastnosť Pridanie položiek.
    2. Dvakrát kliknite na tlačidlo otvoriť okno kód a prilepte nasledujúci kód v Button1_Click udalosť:
      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. V Hashtable objekt poskytuje službu indexovanie. V nasledujúcich krokoch indexovať s Kľúč prístup na hodnotu, ktorá je uložená na hashovaný adresár mieste:
    1. Pridať Tlačidlo kontroly Form1 a zmeniť programu Vlastnosť Získajte položiek.
    2. Kliknite dvakrát na tlačidlo a prilepte nasledujúci kód v Button2_Click udalosť:
      //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. V nasledujúcich krokoch, použite Odstránenie metóda odstrániť jednu položku z HashTable kolekcie:
    1. Pridať Tlačidlo kontroly Form1 a zmeniť Text Vlastnosť Odstránenie položky.
    2. Kliknite dvakrát na tlačidlo a prilepte nasledujúci kód v Button3_Click udalosť:
      <?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. V nasledujúcich krokoch enumerovať položiek, ktoré sú uložené v kolekcii HashTable:
    1. Pridať Tlačidlo kontroly Form1 a zmeniť Text Vlastnosť Enumerovať.
    2. Kliknite dvakrát na tlačidlo a prilepte nasledujúci kód v Button4_Click udalosť:
      <?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?>
      Tento kód deklaruje premennú typu IDictionaryEnumerator a vyzýva GetEnumerator metóda zberu HashTable. S Enumerátor vrátené, kód enumeruje cez položky v kolekcii a používa Kľúče metóda HashTable Enumerácia prostredníctvom kľúče.
  9. V nasledujúcich krokoch, použite Jasné metóda zrušte HashTable:
    1. Pridať Tlačidlo kontroly Form1 a zmeniť Text Vlastnosť Jasné.
    2. Kliknite dvakrát na tlačidlo a prilepte nasledujúci kód v Button5_Click udalosť:
      MyTable.Clear();
            MessageBox.Show("HashTable is now empty");
      						
  10. Postupujte podľa týchto krokov na vybudovanie a spustenie aplikácie:
    1. Kliknite na položku Pridanie položiek. Poznámka, že tri Osoba objekty sa pridávajú k HashTable zberu.
    2. Kliknite na položku Získajte položiek. Všimnite si, že indexer získa položky v kolekcii HashTable. Tri novo pridané položky sa zobrazia.
    3. Kliknite na položku Odstránenie položky. Všimnite si, že bod kľúčové miesta "Burris" sa vypúšťa.
    4. Kliknite na položku Enumerovať. Všimnite si, že IDictionaryEnumerator enumeruje cez položky v kolekcii HashTable a Kľúče Vlastnosť HashTable vráti zbierku kľúče.
    5. Kliknite na položku Jasné. Všimnite si, že všetky položky sú preverení z HashTable kolekcie.
Poznámka: Príklad spoločnosti, organizácie, produkty, názvy domén, e-mailové adresy, logá, ľudí, places and events príkladoch sú vymyslené. Akákoľvek podobnosť so skutočnou spoločnosťou, organizáciou, výrobku, doménové meno, e-mailovú adresu, loga, osoba, miestach alebo udalosti je určená alebo udalosťami je čisto náhodná.

Vlastnosti

ID článku: 309357 - Posledná kontrola: 1. novembra 2011 - Revízia: 2.0
Informácie v tomto článku sa týkajú nasledujúcich produktov:
  • Microsoft Visual C# 2008 Express Edition
  • Microsoft Visual C# 2005
  • Microsoft Visual C++ .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
Kľúčové slová: 
kbhowtomaster kbmt KB309357 KbMtsk
Strojovo preložené
DÔLEŽITÉ: Tento článok bol preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft, nie prekladateľom. Spoločnosť Microsoft ponúka články preložené prekladateľmi aj strojovo preložené články, vďaka čomu máte možnosť prístupu ku všetkým článkom databázy Knowledge Base vo svojom jazyku. Strojovo preložený článok však nie je vždy perfektný. Môže obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky, podobne ako cudzinec môže robiť chyby, keď rozpráva vašim jazykom. Spoločnosť Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené akýmkoľvek nepresným prekladom obsahu alebo jeho použitím zo strany zákazníkov. Spoločnosť Microsoft softvér na strojový preklad pravidelne aktualizuje.
Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem:309357

Odošlite odozvu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com