Como trabalhar com a colecção HashTable no Visual C#

Traduções de Artigos Traduções de Artigos
Artigo: 309357 - Ver produtos para os quais este artigo se aplica.
Para obter uma Microsoft Visual Basic .NET versão deste artigo, consulte 307933.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

Este artigo passo a passo mostra como utilizar a colecção HashTable. Porque hash elimina a necessidade para procura dispendiosa de dados obter os dados, pode utilizar a criação de algoritmos hash para obter uma forma eficiente dados. Criação de algoritmos hash utiliza o valor da chave própria para localizar os dados.

As bibliotecas de classe base oferecem uma classe HashTable definido no espaço de nomes System.Collections para que não sejam necessários para as suas próprias tabelas hash de código.

Passos para criar o exemplo

Uma colecção de HashTable armazena um par (chave, valor) e utiliza a chave hash e obter a localização de armazenamento. A chave é imutável e não pode ter entradas duplicadas na HashTable . Este exemplo utiliza várias instâncias de uma classe de utilizador simples para armazenar um HashTable . O último nome é utilizado como chave .
  1. Abra o Microsoft Visual Studio e crie um projecto de aplicação do Windows Forms no Visual C#. Form1 é adicionado ao projecto por predefinição.
  2. No Solution Explorer, clique com o botão direito do rato no nome do projecto, aponte para Adicionar e, em seguida, clique em classe para adicionar um módulo de classe. Aula1 é adicionado ao projecto por predefinição.
  3. Substitua qualquer código no módulo Aula1 o seguinte código:
     public class Person
    {
    	public string Fname, Lname;
    
    	public Person(string FirstName, string LastName)
    	{
    		Fname = FirstName;
    		Lname = LastName;
    	}
    
    	public override string ToString()
    	{
    		return Fname + " " + Lname;
    	}
    }
    						
    a classe de utilizador tem um construtor que utiliza os parâmetros de nome e Apelido e atribui estes parâmetros para as variáveis locais. A função ToString substitui ToString da classe de objecto para regressar Fname e Lname concatenado em conjunto.
  4. Criar um objecto de Hashtable nível do formulário e declarar três variáveis do tipo contacto . Adicione o seguinte código à classe 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. Nos passos seguintes, utilize o método Add do objecto Hashtable para adicionar três objectos de utilizador para Hashtable num bloco try-catch . O bloco try-catch identificou a excepção e apresenta uma mensagem se existirem chaves duplicadas:
    1. Colocar um controlo de botão no Form1 e altere a propriedade de texto para Adicionar itens .
    2. Faça duplo clique no botão para abrir a janela de código e, cole o seguinte código no evento 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. O objecto Hashtable fornece um indexador. Nos passos seguintes, índice com a chave para aceder ao valor armazenado na localização hash:
    1. Adicione um controlo de botão ao Form1 e altere a propriedade Name para Obter itens .
    2. Faça duplo clique no botão e cole o seguinte código no evento 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. Nos passos seguintes, utilize o método Remove para remover um único item da coleção HashTable:
    1. Adicione um controlo de botão ao Form1 e altere a propriedade de texto para Remover o item .
    2. Faça duplo clique no botão e cole o seguinte código no evento 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. Nos passos seguintes, enumerar os itens que são armazenados na colecção HashTable:
    1. Adicione um controlo de botão ao Form1 e altere a propriedade de texto para Enumerate .
    2. Faça duplo clique no botão e cole o seguinte código no evento 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?>
      este código indica uma variável do tipo IDictionaryEnumerator e chama o método GetEnumerator da colecção HashTable. Com o enumerador devolvido, o código enumera pelos itens na colecção e utiliza o método chaves do HashTable enumerar através das chaves.
  9. Nos passos seguintes, utilize o método Limpar para limpar HashTable :
    1. Adicione um controlo de botão ao Form1 e altere a propriedade de texto para Limpar .
    2. Faça duplo clique no botão e cole o seguinte código no evento Button5_Click :
      MyTable.Clear();
            MessageBox.Show("HashTable is now empty");
      						
  10. Siga estes passos para criar e executar a aplicação:
    1. Clique em Adicionar itens . Note que três objectos de utilizador são adicionados à colecção HashTable.
    2. Clique em obter itens . Tenha em atenção que o indexador obtém itens na colecção HashTable. As três recentemente adicionados os itens são apresentados.
    3. Clique em Remover produto . Note que o item na localização "Burris" chave é eliminado.
    4. Clique em enumerar . Tenha em atenção que IDictionaryEnumerator enumera pelos itens na colecção HashTable e a propriedade de chaves do HashTable devolve um conjunto de chaves.
    5. Clique em Limpar . Tenha em atenção que todos os itens estão desmarcados da colecção HashTable.
Nota Os exemplos de empresas, organizações, produtos, nomes de domínio, endereços de correio electrónico, logótipos, pessoas, locais e eventos aqui mencionados são fictícios. Nenhuma associação com qualquer empresa, organização, produto, nome de domínio, endereço de correio electrónico, logótipo, pessoa, locais ou eventos é intencional ou deve ser inferida.

Propriedades

Artigo: 309357 - Última revisão: 15 de julho de 2008 - Revisão: 4.0
A informação contida neste artigo aplica-se a:
  • Microsoft Visual C# 2008 Express Edition
  • Microsoft Visual C# 2005
  • Microsoft Visual C++ .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
Palavras-chave: 
kbmt kbhowtomaster KB309357 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 309357

Submeter comentários

 

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