Come utilizzare insieme HashTable in Visual C#

Traduzione articoli Traduzione articoli
Identificativo articolo: 309357 - Visualizza i prodotti a cui si riferisce l?articolo.
Per la una versione di Microsoft Visual Basic .NET di questo articolo, vedere 307933.
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

In questo articolo viene illustrato come utilizzare l'insieme HashTable. PoichÚ l'hash elimina la necessitÓ di effettuare costose ricerche per recuperare i dati, Ŕ possibile servirsene per rendere pi¨ efficiente il recupero. L'hash impiega il valore della chiave in sÚ per individuare i dati.

Le librerie di classi base offrono una classe HashTable , definita nello spazio dei nomi System.Collections in modo che non siano necessari per le proprie tabelle di hash del codice.

Procedura per compilare il progetto di esempio

Un insieme HashTable memorizza una coppia (chiave, valore) e utilizza la chiave per hash e di ottenere il percorso di archiviazione. La chiave non Ŕ modificabile e non pu˛ avere voci duplicate in HashTable . In questo esempio utilizza pi¨ istanze di una classe utente semplice per archiviare in una HashTable . Il nome dell'ultimo viene utilizzato come la chiave .
  1. Aprire Microsoft Visual Studio e creare un progetto applicazione Windows Form in Visual C#. In base all'impostazione predefinita verrÓ aggiunto al progetto il Form1.
  2. In Esplora soluzioni, fare clic con il pulsante destro del mouse sul nome progetto, scegliere Aggiungi , quindi la classe per aggiungere un modulo di classe. In base all'impostazione predefinita al progetto verrÓ aggiunto Class1.
  3. Sostituire qualsiasi codice nel modulo Class1 con il codice riportato di seguito:
     public class Person
    {
    	public string Fname, Lname;
    
    	public Person(string FirstName, string LastName)
    	{
    		Fname = FirstName;
    		Lname = LastName;
    	}
    
    	public override string ToString()
    	{
    		return Fname + " " + Lname;
    	}
    }
    						
    la classe utente dispone di un costruttore che accetta i parametri di nome e Cognome e assegna i parametri alle variabili locali. La funzione ToString esegue l'override ToString dalla classe Object per restituire Fname e Lname concatenati tra loro.
  4. Creare un oggetto Hashtable di a livello di form e dichiarare tre variabili di tipo Person . Aggiungere il codice seguente alla 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. Di seguito, Ŕ possibile utilizzare il metodo Add dell'oggetto Hashtable per aggiungere tre oggetti Person per Hashtable in un blocco try-catch . Il blocco try catch intercetta l'eccezione e viene visualizzato un messaggio se esistono chiavi duplicate:
    1. Posizionare un controllo Button in Form1 e modificare la proprietÓ Text all'Aggiunta di elementi .
    2. Fare doppio clic sul pulsante per aprire la finestra del codice e incollare il codice seguente nell'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. L'oggetto di Hashtable fornisce un indicizzatore. Nella procedura seguente, l'indice con la chiave per accedere al valore memorizzato nella posizione in cui Ŕ stato eseguito l'hashing:
    1. Aggiungere un controllo pulsante a Form1 e modificare la proprietÓ Name per Ottenere gli articoli .
    2. Fare doppio clic sul pulsante e incollare il codice seguente nell'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. Di seguito, Ŕ possibile utilizzare il metodo Remove per rimuovere un singolo elemento dall'insieme HashTable:
    1. Aggiungere un controllo pulsante a Form1 e modificare la proprietÓ Text a Rimuovi elemento .
    2. Fare doppio clic sul pulsante e incollare il codice seguente nell'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. Nella procedura seguente enumerare gli elementi memorizzati nell'insieme HashTable:
    1. Aggiungere un controllo pulsante a Form1 e modificare la proprietÓ Text per enumerate .
    2. Fare doppio clic sul pulsante e incollare il codice seguente nell'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?>
      questo codice dichiara una variabile di tipo IDictionaryEnumerator e chiama il metodo di GetEnumerator dell'insieme HashTable. Con l' enumeratore restituito, il codice enumera gli elementi nell'insieme e utilizza il metodo di chiavi della HashTable per enumerare le chiavi.
  9. Nei passaggi seguenti, utilizzare il metodo Clear deselezionare HashTable :
    1. Aggiungere un controllo pulsante a Form1 e modificare la proprietÓ Text Cancella .
    2. Fare doppio clic sul pulsante e incollare il seguente codice nell'evento Button5_Click :
      MyTable.Clear();
            MessageBox.Show("HashTable is now empty");
      						
  10. Attenersi alle seguenti procedure per generare ed eseguire l'applicazione:
    1. Fare clic su Aggiungi elementi . Si noti che tre oggetti Person vengono aggiunti all'insieme HashTable.
    2. fare clic su posta. Si noti che l'indicizzatore recupera gli elementi nell'insieme HashTable. Vengono visualizzati i tre elementi appena aggiunti.
    3. Fare clic su Rimuovi elemento . Si noti che l'elemento nella posizione chiave "Burris" viene eliminato.
    4. Fare clic su Enumera . Si noti che IDictionaryEnumerator enumera gli elementi nell'insieme HashTable e la proprietÓ tasti HashTable restituisce un insieme di chiavi.
    5. Fare clic su Cancella . Si noti che tutti gli elementi vengono cancellati dall'insieme HashTable.
Nota La societÓ, organizzazioni, prodotti, i nomi di dominio, gli indirizzi di posta elettronica, logo, persone, posizioni ed puramente nel presente documento sono puramente casuale. Nessuna associazione con qualsiasi societÓ, organizzazione, prodotto, nome di dominio, indirizzo di posta elettronica, logo, persona, posizioni o eventi Ŕ destinato o pu˛ essere presupposta.

ProprietÓ

Identificativo articolo: 309357 - Ultima modifica: martedý 15 luglio 2008 - Revisione: 4.0
Le informazioni in questo articolo si applicano 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
Chiavi:á
kbmt kbhowtomaster KB309357 KbMtit
Traduzione automatica articoli
Il presente articolo Ŕ stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non Ŕ sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, pi¨ o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non Ŕ la sua. Microsoft non Ŕ responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 309357
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

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