Εργασία με τη συλλογή HashTable σε Visual C#

Μεταφράσεις άρθρων Μεταφράσεις άρθρων
Αναγν. άρθρου: 309357 - Δείτε τα προϊόντα στα οποία αναφέρεται το συγκεκριμένο άρθρο.
Για την έκδοση Microsoft Visual Basic .NET αυτού του άρθρου, ανατρέξτε στην ενότητα307933.
Ανάπτυξη όλων | Σύμπτυξη όλων

Σε αυτήν τη σελίδα

Περίληψη

Αυτό το άρθρο βήμα προς βήμα σας δείχνει πώς να χρησιμοποιήσετε τη συλλογή HashTable. Επειδή κλειδώματος εξαλείφει την ανάγκη για δαπανηρή η αναζήτηση δεδομένων για την ανάκτηση δεδομένων, μπορείτε να χρησιμοποιήσετε κατακερματισμού για την αποτελεσματική ανάκτηση δεδομένων. Κλειδώματος χρησιμοποιεί την τιμή του κλειδιού μόνο για τον εντοπισμό των δεδομένων.

Τις βιβλιοθήκες κλάσης Base προσφέρουν έναHashTableη κλάση που έχει καθοριστεί στο στοSystem.Collectionsχώρος ονομάτων, έτσι ώστε δεν είναι απαραίτητο για τη δική σας πίνακες κατακερματισμού.

Τα βήματα για να δημιουργήσετε το δείγμα

Μια συλλογή HashTable αποθηκεύει ένα(Key, τιμή)ζεύγος και τις χρήσεις τηςΚλειδίο κατακερματισμός και αποκτήστε τη θέση αποθήκευσης. Για ναΚλειδίείναι immutable και δεν είναι δυνατό να έχουν διπλότυπες καταχωρήσεις στο στοHashTable. Αυτό το δείγμα χρησιμοποιεί πολλές εμφανίσεις ενός απλούΤο άτομοκλάση να αποθηκεύσετε σε έναHashTable. Το τελευταίο όνομα που χρησιμοποιείται ως τοΚλειδί.
  1. Ανοίξτε το Microsoft Visual Studio και να δημιουργήσετε ένα έργο εφαρμογής Windows Forms σε Visual C#. Φόρμα1 προστίθεται στο έργο, από προεπιλογή.
  2. Στην Εξερεύνηση των λύσεων, κάντε δεξιό κλικ στο όνομα έργου, τοποθετήστε το δείκτηADD, και στη συνέχεια κάντε κλικ στο κουμπίCLASSΓια να προσθέσετε μια λειτουργική μονάδα κλάσης. Class1 προστίθεται στο έργο, από προεπιλογή.
  3. Αντικατάσταση κώδικα στη λειτουργική μονάδα Class1 με τον ακόλουθο κώδικα:
     public class Person
    {
    	public string Fname, Lname;
    
    	public Person(string FirstName, string LastName)
    	{
    		Fname = FirstName;
    		Lname = LastName;
    	}
    
    	public override string ToString()
    	{
    		return Fname + " " + Lname;
    	}
    }
    						
    Για ναΤο άτομοη κλάση έχει μια κατασκευή που λαμβάνει το"Όνομα"ANDLastnameπαράμετροι και αντιστοιχίζει αυτές τις παραμέτρους σε τοπικές μεταβλητές. Για ναToStringαντικαθιστά τη λειτουργίαToStringαπό τοObjectη κλάση για την επιστροφήFnameANDLNameσυνενωθούν μαζί.
  4. Δημιουργία ενός επιπέδου φόρμαςHashtableαντικείμενο και δηλώνετε μεταβλητές τρεις τύπουΤο άτομο. Προσθέστε τον ακόλουθο κώδικα στην κλάση Φόρμα1:
    <?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. Στα παρακάτω βήματα, χρησιμοποιήστε τοADDη μέθοδος τουHashtableΓια να προσθέσετε τρεις αντικειμένουΤο άτομοαντικείμενα για τηνHashtableσε μιαtry-catchμπλοκ. Για ναtry-catchμπλοκ συλλαμβάνει την εξαίρεση και εμφανίζει ένα μήνυμα, αν υπάρχουν διπλότυπα κλειδιά:
    1. Τοποθετήστε έναΚουμπίcontrol on Form1, and change theTextη ιδιότητα ναAdd Items.
    2. Double-click the button to open its Code window, and paste the following code in theButton1_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. Για ναHashtableobject provides an indexer. In the following steps, index with theΚλειδίto access the value that is stored at the hashed location:
    1. Προσθήκη ενόςΚουμπίcontrol to Form1, and change theNAMEη ιδιότητα ναGet Items.
    2. Double-click the button, and paste the following code in theButton2_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. In the following steps, use theκατάργησηmethod to remove a single item from the HashTable collection:
    1. Προσθήκη ενόςΚουμπίcontrol to Form1, and change theTextη ιδιότητα ναRemove Item.
    2. Double-click the button, and paste the following code in theButton3_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. In the following steps, enumerate the items that are stored in the HashTable collection:
    1. Προσθήκη ενόςΚουμπίcontrol to Form1, and change theTextη ιδιότητα ναEnumerate.
    2. Double-click the button, and paste the following code in theButton4_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?>
      This code declares a variable of typeIDictionaryEnumeratorand calls theGetEnumeratormethod of the HashTable collection. Με τοEnumeratorreturned, the code enumerates through the items in the collection and uses theKeysη μέθοδος τουHashTableto enumerate through the keys.
  9. In the following steps, use theΑπαλοιφήmethod to clear theHashTable:
    1. Προσθήκη ενόςΚουμπίcontrol to Form1, and change theTextη ιδιότητα ναΑπαλοιφή.
    2. Double-click the button, and paste the following code in theButton5_ClickΣυμβάν:
      MyTable.Clear();
            MessageBox.Show("HashTable is now empty");
      						
  10. Follow these steps to build and run the application:
    1. Κάντε κλικAdd Items. Note that threePersonobjects are added to the HashTable collection.
    2. Κάντε κλικGet Items. Note that the indexer obtains the items in the HashTable collection. The three newly added items are displayed.
    3. Κάντε κλικRemove Item. Note that the item at the "Burris" key location is deleted.
    4. Κάντε κλικEnumerate. Note thatIDictionaryEnumeratorenumerates through the items in the HashTable collection, and theKeysproperty of the HashTable returns a Keys Collection.
    5. Κάντε κλικΑπαλοιφή. Note that all the items are cleared from the HashTable collection.
ΣΗΜΕΙΩΣΗThe example companies, organizations, products, domain names, e-mail addresses, logos, people, places, and events depicted herein are fictitious. No association with any real company, organization, product, domain name, email address, logo, person, places, or events is intended or should be inferred.

Ιδιότητες

Αναγν. άρθρου: 309357 - Τελευταία αναθεώρηση: Δευτέρα, 20 Δεκεμβρίου 2010 - Αναθεώρηση: 2.0
Οι πληροφορίες σε αυτό το άρθρο ισχύουν για:
  • Microsoft Visual C# 2008 Express Edition
  • Microsoft Visual C# 2005
  • Microsoft Visual C++ .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
Λέξεις-κλειδιά: 
kbhowtomaster kbmt KB309357 KbMtel
Μηχανικά μεταφρασμένο
ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της Microsoft και όχι ανθρώπινης μετάφρασης. Η Microsoft σάς προσφέρει άρθρα που είναι προϊόντα ανθρώπινης αλλά και μηχανικής μετάφρασης έτσι ώστε να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής Βάσης μας στη δική σας γλώσσα. Ωστόσο, ένα άρθρο που έχει προκύψει από μηχανική μετάφραση δεν είναι πάντα άριστης ποιότητας. Ενδέχεται να περιέχει λεξιλογικά, συντακτικά ή γραμματικά λάθη, όπως ακριβώς τα λάθη που θα έκανε ένας μη φυσικός ομιλητής επιχειρώντας να μιλήσει τη γλώσσα σας. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες της. Επίσης, η Microsoft πραγματοποιεί συχνά ενημερώσεις στο λογισμικό μηχανικής μετάφρασης.
Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη:309357

Αποστολή σχολίων

 

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