Jak pracovat s kolekce HashTable v jazyce Visual C#

Překlady článku Překlady článku
ID článku: 309357 - Produkty, které se vztahují k tomuto článku.
Pro Microsoft Visual Basic.NET verzi tohoto článku, naleznete v tématu 307933.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

Tento podrobný článek popisuje použití kolekce HashTable. Protože zatřiďování eliminuje potřebu nákladné vyhledávání dat načíst data, můžete použít algoritmus hash účinně načítat data. K vyhledání dat hash používá hodnotu klíče, sám.

Knihovny třídy Base nabízejí HashTable Třída, která je definována v System.Collections obor názvů tak, že není potřeba kód hash tabulky.

Kroky k vytvoření vzorku

Kolekce HashTable ukládá (Klíč hodnota) dvojice a používá Klíč hash a získat umístění úložiště. Na Klíč je neměnná a nelze mít duplicitní položky v HashTable. Tento příklad používá několik instancí jednoduchého Osoba třídy pro uložení HashTable. Poslední název slouží jako Klíč.
  1. Otevřete aplikaci Microsoft Visual Studio a vytvořit projekt model Windows Forms aplikace v jazyce Visual C#. Ve výchozím nastavení je do projektu přidány Formulář1.
  2. V aplikaci Solution Explorer klepněte pravým tlačítkem myši na název projektu, přejděte na Přidata klepněte na tlačítko Třída Přidání modulu třídy. Ve výchozím nastavení je do projektu přidány Class1.
  3. Nahraďte libovolný kód v modulu Class1 následující 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;
    	}
    }
    						
    Na Osoba Třída má jeden konstruktor, který zabírá Jméno a Příjmení parametry a přiřadí tyto parametry místní proměnné. Na ToString lokální změny funkce ToString od Objekt Třída vrátit Fname a LName vytvoří spojením společně.
  4. Vytvořit formulář úroveň Hashtable objekt a deklarovat tři proměnné typu Osoba. Třída formulář1, přidejte následující 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 následujících krocích, použít Přidat Metoda Hashtable objekt, který chcete přidat tři Osoba objekty do Hashtable v try-catch blok. Na try-catch blok úlovky výjimku a zobrazí zprávu v případě existence duplicitního klíče:
    1. Místo Tlačítko formulář1 ovládat a měnit Text Vlastnost Přidat položky.
    2. Poklepejte na tlačítko otevřete okno jeho kód a vložte následující kód v Button1_Click událost:
      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. Na Hashtable objekt obsahuje indexovací člen. V následujících krocích, index se Klíč hodnota uložená v umístění hodnoty hash přístup:
    1. Přidat Tlačítko do formuláře Form1 řídit a změnit Název Vlastnost Získat zboží.
    2. Poklepejte na tlačítko a vložte následující kód v Button2_Click událost:
      //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 následujících krocích, použít Odebrat Metoda odstranit jednu položku z kolekce HashTable:
    1. Přidat Tlačítko do formuláře Form1 řídit a změnit Text Vlastnost Odstranit položku.
    2. Poklepejte na tlačítko a vložte následující kód v Button3_Click událost:
      <?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 následujících krocích výčet položek, které jsou uloženy v kolekce HashTable:
    1. Přidat Tlačítko do formuláře Form1 řídit a změnit Text Vlastnost Výčet.
    2. Poklepejte na tlačítko a vložte následující kód v Button4_Click událost:
      <?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 proměnnou typu IDictionaryEnumerator a volá GetEnumerator Metoda kolekce HashTable. S Čítač výčtu Vrátí, kód výčet prostřednictvím položek v kolekci a používá Klíče Metoda HashTable provedení výčtu klíčů.
  9. V následujících krocích, použít Vymazat Metoda zrušte HashTable:
    1. Přidat Tlačítko do formuláře Form1 řídit a změnit Text Vlastnost Vymazat.
    2. Poklepejte na tlačítko a vložte následující kód v Button5_Click událost:
      MyTable.Clear();
            MessageBox.Show("HashTable is now empty");
      						
  10. Takto sestavit a spustit aplikaci:
    1. Klepněte na tlačítko Přidat položky. Poznámka, že tři Osoba objekty jsou přidány do kolekce HashTable.
    2. Klepněte na tlačítko Získat zboží. Všimněte si, že získává indexovacího položky kolekce HashTable. Tři nově přidané položky jsou zobrazeny.
    3. Klepněte na tlačítko Odstranit položku. Všimněte si, že položku na místě klíče "burris" se zrušuje.
    4. Klepněte na tlačítko Výčet. Všimněte si, že IDictionaryEnumerator výčet pomocí položky kolekce HashTable a Klíče Vlastnost HashTable vrací sadu klíčů.
    5. Klepněte na tlačítko Vymazat. Všimněte si, že všechny položky z kolekce HashTable budou vymazány.
Poznámka: Společností, organizací, produktů, názvy domén, e-mailové adresy, loga, osoby, místa a události použité v ukázkách jsou smyšlené. Spojení se skutečnou společností, organizací, produktu, název domény, e-mailovou adresu, logo, osobě, místa nebo události je určen nebo událostmi.

Vlastnosti

ID článku: 309357 - Poslední aktualizace: 18. května 2011 - Revize: 6.0
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Visual C# 2008 Express Edition
  • Microsoft Visual C# 2005
  • Microsoft Visual C++ .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
Klíčová slova: 
kbhowtomaster kbmt KB309357 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:309357

Dejte nám zpětnou vazbu

 

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