Vous êtes actuellement hors ligne, en attente de reconnexion à Internet.

L'utilisation de la collection HashTable dans Visual C#

IMPORTANT : Cet article est issu d'une traduction automatique réalisée par un logiciel Microsoft et non par un traducteur professionnel. Cette traduction automatique a pu aussi être révisée par la communauté Microsoft grâce à la technologie Community Translation Framework (CTF). Pour en savoir plus sur cette technologie, veuillez consulter la page http://support.microsoft.com/gp/machine-translation-corrections/fr. Microsoft vous propose en effet des articles traduits par des professionnels, des articles issus de traductions automatiques et des articles issus de traductions automatiques révisées par la communauté Microsoft, de manière à ce que vous ayez accès à tous les articles de notre Base de connaissances dans votre langue. Il est important de noter que les articles issus de la traduction automatique, y compris ceux révisés par la communauté Microsoft, peuvent contenir des erreurs de vocabulaire, de syntaxe ou de grammaire. Microsoft ne pourra être tenu responsable des imprécisions, erreurs, ainsi que de tout dommage résultant d’une traduction incorrecte du contenu ou de son utilisation par les clients.

309357
Pour obtenir une version Microsoft Visual Basic .NET de cet article, reportez-vous à la section. 307933.
Résumé
Cet article pas à pas vous montre comment utiliser la collection HashTable. Dans la mesure où le hachage évite de coûteuses recherches de données pour les récupérer , vous pouvez utiliser le hachage pour augmenter l’efficacité de récupération des données. Hachage utilise la valeur de la clé elle-même pour rechercher des données.

Les bibliothèques de classes de Base offrent une classe HashTable qui est définie dans l'espace de noms System.Collections afin que vous n'êtes pas obligé de coder vos propres tables de hachage.

Étapes pour créer l'exemple

Une collection HashTable stocke une paire (clé, valeur) et utilise la clé de hachage et d'obtenir l'emplacement de stockage. La clé est immuable et ne peut pas contenir des entrées en double dans la table de hachage. Cet exemple utilise plusieurs instances d'une classe de personne simple pour stocker dans une table de hachage. Le nom est utilisé comme clé.
  1. Ouvrez Microsoft Visual Studio et créez un projet d'Application Windows Forms dans Visual C#. Form1 est ajouté au projet par défaut.
  2. Dans l'Explorateur de solutions, cliquez sur le nom du projet, pointez sur Ajouter, puis cliquez sur une classe pour ajouter un module de classe. Class1 est ajouté au projet par défaut.
  3. Remplacez le code dans le module Class1 par le code suivant :
     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 de personne possède un constructeur qui accepte les paramètres FirstName et LastName et affecte ces paramètres pour les variables locales. La fonction ToString substitue ToString de la classe Object pour renvoyer Fname et Lname concaténées.
  4. Créer un objet de table de hachage de niveau formulaire et déclarer trois variables de type Person. Ajoutez le code suivant à la 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. Dans les étapes suivantes, utilisez la méthode Add de l'objet Hashtable pour ajouter trois objets Person à la table de hachage dans un bloc try-catch . Le bloc try-catch intercepte l'exception et affiche un message si les clés en double existent :
    1. Placez un contrôle de bouton sur Form1 et modifiez la propriété Text la valeur Ajouter des éléments.
    2. Double-cliquez sur le bouton pour ouvrir la fenêtre de Code, puis collez le code suivant dans l'événement 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'objet Hashtable fournit un indexeur. Dans les étapes suivantes, index avec la clé pour accéder à la valeur qui est stockée à l'emplacement haché :
    1. Ajoutez un contrôle bouton à Form1 et modifiez la propriété Name pour Obtenir des éléments.
    2. Double-cliquez sur le bouton et collez le code suivant dans l'événement 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. Dans les étapes suivantes, utilisez la méthode Remove pour supprimer un seul élément de la collection HashTable :
    1. Ajoutez un contrôle bouton à Form1 et modifiez la propriété Text la valeur Supprimer élément.
    2. Double-cliquez sur le bouton et collez le code suivant dans l'événement 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. Dans les étapes suivantes, énumérer les éléments qui sont stockés dans la collection HashTable :
    1. Ajoutez un contrôle bouton à Form1 et modifiez la propriété Text la valeur Énumérer les.
    2. Double-cliquez sur le bouton et collez le code suivant dans l'événement 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?>
      Ce code déclare une variable de type IDictionaryEnumerator et appelle la méthode GetEnumerator de la collection HashTable. L' énumérateur retourné, le code énumère les éléments de la collection et utilise la méthode de clés de la table de hachage pour énumérer les clés.
  9. Dans les étapes suivantes, utilisez la méthode Clear pour effacer la table de hachage:
    1. Ajoutez un contrôle bouton à Form1 et modifiez la propriété Text la valeur Effacer.
    2. Double-cliquez sur le bouton et collez le code suivant dans l'événement Button5_Click :
      MyTable.Clear();      MessageBox.Show("HashTable is now empty");						
  10. Procédez comme suit pour générer et exécuter l'application :
    1. Cliquez sur Ajouter des éléments. Notez que les trois objets Person sont ajoutés à la collection HashTable.
    2. Cliquez sur obtenir des éléments. Notez que l'indexeur obtienne les éléments de la collection HashTable. Les trois nouveaux ajoutés les éléments sont affichés.
    3. Cliquez sur Supprimer l'élément. Notez que l'élément situé à l'emplacement de la clé « Burris » est supprimé.
    4. Cliquez sur énumérer. Notez que IDictionaryEnumerator énumère les éléments dans la collection HashTable, et la propriété Keys de la table de hachage renvoie une Collection de clés.
    5. Cliquez sur Effacer. Notez que tous les éléments sont effacés de la collection HashTable.
Remarque Exemples de sociétés, organisations, produits, noms de domaine, adresses de messagerie, logos, personnes, lieux et les événements mentionnés dans les exemples sont fictifs. Aucune association à toute société, organisation, produit, nom de domaine, adresse e-mail, logo, personne, lieux ou événements fortuite ou est destinée.

Avertissement : Cet article a été traduit de manière automatique

Propriétés

ID d'article : 309357 - Dernière mise à jour : 03/29/2015 23:26:00 - Révision : 5.0

  • Microsoft Visual C++ .NET 2003 Initiation
  • Microsoft Visual C# .NET 2002 Initiation
  • kbhowtomaster kbmt KB309357 KbMtfr
Commentaires