Como usar a coleção Hashtable no Visual C++

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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 815673
Para obter uma Microsoft Visual translation from VPE for Csharp .NET versão deste artigo, consulte 309357.
Para uma versão deste artigo do Microsoft Visual Basic. NET, consulte 307933.

NESTA TAREFA

Sumário
Este artigo passo a passo descreve como usar a coleção de Hashtable . Usando hash para recuperar os dados, não é necessário usar o mecanismo de pesquisando caro. Hash usa o valor da chave próprio para localizar os dados.

As bibliotecas de classes base oferecem uma classe Hashtable , que é definida no namespace System.Collections , para que você não tem suas próprias tabelas de hash de código.

back to the top

Requisitos

Este artigo pressupõe que você esteja familiarizado com os seguintes tópicos:
  • Microsoft Visual Studio .NET ou Microsoft Visual Studio 2005
  • Conceitos básicos do Microsoft .NET Framework
  • Conceitos de programação orientada a objeto
A lista a seguir descreve o hardware recomendado, software, infra-estrutura de rede e service packs que você precisa:
  • Microsoft Visual Studio .NET 2003 ou Microsoft Visual Studio 2005
  • O Microsoft .NET Framework 1.1
back to the top

Etapas para criar o exemplo

Uma coleção de Hashtable armazena um par de chaves e valores (valor da chave,). A coleção Hashtable usa a chave de hash e obter o local de armazenamento. A chave é imutável e não pode ter entradas duplicadas na coleção Hashtable . Este exemplo usa várias instâncias de uma simples classe de pessoa para armazenar registros em uma coleção de Hashtable . O último nome é usado como a chave.
  1. Inicie o Visual Studio .NET 2003 ou Microsoft Visual Studio 2005.
  2. No menu arquivo , aponte para novo e, em seguida, clique em Project .
  3. Em Project Types , clique em Projetos do Visual c++ .

    Observação No Microsoft Visual Studio 2005, clique em Visual C++ em Tipos de projeto .
  4. Em modelos , clique em Windows Forms Application (. NET) .

    Observação No Microsoft Visual Studio 2005, clique em Windows Forms Application em modelos .
  5. Na caixa nome , digite 815673 e, em seguida, clique em OK .

    Por padrão, o Form1 é adicionado para o projeto.
  6. No menu Project , clique em Adicionar classe .
  7. Na caixa de diálogo Add Class , clique em Classe do C++ genérico em modelos e, em seguida, clique em Abrir .

    Observação No Microsoft Visual Studio 2005, clique em Classe do C++ em modelos .
  8. No Assistente de classe C++ genérico, digite pessoa na caixa nome da classe e em seguida, clique em Concluir .
  9. Abra o arquivo Person.cpp e exclua o código para o construtor e o código para o destruidor.
  10. Abra o arquivo Person.h e, em seguida, substitua o código existente com o código a seguir.
    #pragma onceusing namespace System;public __gc class Person{public:	String *Fname, *Lname;public:	Person(String *FirstName, String *LastName)	{		Fname = FirstName;		Lname = LastName;	}		String* ToString()	{		return String::Concat(Fname, S" ",Lname);	}};
    a classe pessoa possui um construtor que leva o parâmetro de nome e o parâmetro de Sobrenome . Ele atribui esses parâmetros para as variáveis locais. A função ToString substitui a função ToString da classe de objeto para retornar o valor Fname e o valor de Sobrenome concatenadas.

    Observação Você deve adicionar a opção de compilador de suporte de tempo de execução idioma comum ( / CLR: oldSyntax ) no Visual C++ 2005 a compilar com êxito este exemplo de código. Para fazer isso, execute as seguintes etapas:
    1. Clique em projeto e, em seguida, clique em propriedades ProjectName .

      Observação ProjectName representa o nome do projeto.
    2. Expanda Configuration Properties e, em seguida, clique em Geral .
    3. Clique para selecionar Common Language Runtime suporte, sintaxe antiga (/ CLR: oldSyntax) no projeto oferece suporte a Common Language Runtime definindo no painel à direita, clique em Aplicar e em seguida, clique em OK .
    Para obter mais informações sobre o common language runtime oferece suporte às opções de compilador, visite o seguinte site:
    /CLR (common Language Runtime Compilation)
    http://msdn2.microsoft.com/en-us/library/k8d11d4s.aspx
    Estas etapas se aplicam a article.le todo.
  11. Alternar para Form1.h[design] , e em seguida, pressione F7 para abrir o arquivo Form.h . Cole o seguinte código no Form1.h arquivo
    #include "Person.h"
  12. Declare uma variável de classe do tipo Hashtable e, em seguida, declare três variáveis de classe do tipo classe Person .
  13. Adicione o seguinte código à classe Form1 :
    public:Hashtable *MyTable;//For simplicity, create three Person objects to add to the Hashtable collection.Person *Person1,*Person2,*Person3;
  14. Para criar uma instância do objeto Hashtable , adicione o seguinte código no construtor da classe Form1 após a chamada para o método InitilizeComponent .
    MyTable = new Hashtable();
  15. Nas etapas a seguir, use o método Add do objeto Hashtable para adicionar três objetos Person para o objeto Hashtable um bloco try-catch . O bloco try-catch captura a exceção e exibe uma mensagem se houver chaves duplicadas.
    1. Adicionar um controle Button ao formulário Form1 e altere a propriedade Text do controle Button para Adicionar itens .
    2. Clique duas vezes o controle button1 e, em seguida, cole o seguinte código no evento Button1_Click .
      Person1 = new Person(S"David", S"Burris");Person2 = new Person(S"Johnny", S"Carrol");Person3 = new Person(S"Ji", S"Jihuang");//The Add method takes the key as the first parameter and the 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(S"Duplicate Key");	MessageBox::Show(ae->Message);}
  16. O objeto Hashtable fornece um indexador. Nas etapas a seguir, índice usando a chave para acessar o valor que é armazenado no local de hash.
    1. Adicionar um controle Button ao formulário Form1 e altere a propriedade Text do controle Button para Obter itens .
    2. Clique duas vezes no controle button2 e cole o código a seguir no event.
      //Use the indexer of the Hashtable class to retrieve your objects. The indexer takes //the key as a parameter and accesses it by using the hashed location.try{	MessageBox::Show(MyTable->get_Item(Person1->Lname)->ToString());	MessageBox::Show(MyTable->get_Item(Person2->Lname)->ToString());	MessageBox::Show(MyTable->get_Item(Person3->Lname)->ToString());}catch (NullReferenceException *ex){	MessageBox::Show(S"Key not in Hashtable");	MessageBox::Show(ex->Message);}
  17. Nas etapas a seguir, use o método Remover para remover um único item da coleção Hashtable .
    1. Adicionar um controle Button ao formulário Form1 e altere a propriedade Text do controle Button para Remover o item .
    2. Clique duas vezes no controle button3 e cole o código a seguir no evento button3_Click .
      if (MyTable->Count == 0) {	MessageBox::Show(S"There are no items in HashTable");}else{	MessageBox::Show(String::Concat(S"The count before removing an Item is ",MyTable->Count.ToString()));	MessageBox::Show(S"Removing value stored at key value (Burris)");	//Remove the object that is stored at the key value Person1.Lname.	MyTable->Remove(Person1->Lname);}
  18. Nas etapas a seguir, enumere os itens que são armazenados na coleção Hashtable .
    1. Adicionar um controle Button ao formulário Form1 e, em seguida, altere a propriedade Text do controle Button para Enumerate .
    2. Clique duas vezes no controle personalizado.4 e cole o código a seguir no evento button4_Click .
      IDictionaryEnumerator *Enumerator;if (MyTable->Count == 0){	MessageBox::Show(S"The hashtable is empty");}else{	MessageBox::Show(S"Enumerating through the Hashtable collection");	Enumerator = MyTable->GetEnumerator();    	while (Enumerator->MoveNext())	{		MessageBox::Show(Enumerator->Value->ToString());	}}ICollection *MyKeys;if (MyTable->Count == 0) {	MessageBox::Show(S"The hashtable is empty");}else{	MessageBox::Show(S"Accessing keys property to return keys collection");	MyKeys = MyTable->get_Keys();	IEnumerator *Key = MyKeys->GetEnumerator();	while(Key->MoveNext())	{		String *keyString = __try_cast<String *> (Key->Current);		MessageBox::Show(keyString);	}}
      esse código declara uma variável do tipo IDictionaryEnumerator e chama o método GetEnumerator da coleção Hashtable . Depois que o código obtém Enumerator , o código enumera entre os itens na coleção e usa o método teclas da coleção Hashtable para enumerar as chaves.
  19. Nas etapas a seguir, o método Clear é usado para limpar a coleção de Hashtable .
    1. Adicionar um controle Button ao formulário Form1 e altere a propriedade Text do controle Button para Limpar .
    2. Clique duas vezes no botão button5 e cole o código a seguir no evento button5_Click .
      MyTable->Clear();MessageBox::Show(S"HashTable is now empty");
  20. Siga estas etapas para criar e executar o aplicativo:
    1. Pressione CTRL + SHIFT + S para salvar o projeto.
    2. Pressione CTRL + SHIFT + B para criar a solução.
    3. Pressione CTRL + F5 para executar o aplicativo.
    4. Clique em Adicionar itens .

      Observe que três objetos Person são adicionados à coleção Hashtable .
    5. clique em itens.

      Observe que o indexador obtém os itens na coleção Hashtable . As três recém-adicionado itens são exibidos.
    6. Clique em Remover Item .

      Observe que o item no local de chave "Burris" será excluído.
    7. Clique em enumerar .

      Observe que a interface IDictionaryEnumerator enumera entre os itens na coleção Hashtable , e a propriedade Keys da coleção Hashtable retorna uma coleção Keys .
    8. Clique em Limpar .

      Observe que todos os itens estão desmarcados da coleção Hashtable .
Observação Os exemplos de empresas, organizações, produtos, nomes de domínio, endereços de email, logotipos, pessoas, lugares e acontecimentos aqui mencionados são fictícios. Nenhuma associação com real da empresa, organização, produto, nome de domínio, endereço de email, logotipo, pessoa, lugar ou evento é intencional ou deve ser inferida.

back to the top
Hashtable, coleção HashTable, hash, chave, enumerar, trabalhando com Hashtable.

Propriedades

ID do Artigo: 815673 - Última Revisão: 01/13/2006 00:42:08 - Revisão: 2.1

Microsoft Visual C++ .NET 2003 Standard Edition, Microsoft .NET Framework 1.1, Microsoft Visual C++ 2005 Express Edition

  • kbmt kbwindowsforms kbcode kbhowtomaster KB815673 KbMtpt
Comentários