SO WIRD'S GEMACHT: Arbeiten mit der HashTable-Auflistung in Visual Basic .NET

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 307933 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Dieser Artikel wurde zuvor veröffentlicht unter D307933
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
307933 HOW TO: Work with the HashTable Collection in Visual Basic .NET
Hinweis: Die Verwendung der hier aufgeführten Informationen sowie Makro- oder Programmcodes geschieht auf Ihre eigene Verantwortung. Microsoft stellt Ihnen diese Informationen sowie Makro- und Programmlistings ohne Gewähr auf Richtigkeit, Vollständigkeit und/oder Funktionalität sowie ohne Anspruch auf Support zur Verfügung. Die zur Verfügung gestellten Makro- und Programmierungsbeispiele sollen lediglich exemplarisch die Funktionsweise des Beispiels aufzeigen.

Weitere Informationen zu den von Microsoft angebotenen Supportoptionen finden Sie unter folgender Internetadresse:
http://support.microsoft.com/
Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

Dieser Artikel enthält Informationen über die HashTable-Auflistung. Da durch Hashing die Notwendigkeit einer aufwendigen Datensuche entfällt, können Sie es zum effizienten Abrufen von Daten einsetzen. Beim Hashing wird der Wert des Schlüssels selbst zur Datensuche verwendet.

Die Basisklassenbibliotheken enthalten eine HashTable-Klasse, die im Namespace System.Collections definiert ist, d.h., Sie müssen keine eigenen Hashtabellen codieren.

Schritt für Schritt-Beispiel

Eine HashTable-Auflistung speichert ein (Schlüssel, Wert)-Paar und verwendet den Schlüssel für das Hashing und die Ermittlung der Speicheradresse. Der Schlüssel ist unveränderlich und kann keine doppelten Einträge in der HashTable haben. In diesem Beispiel werden mehrere Instanzen einer einfachen Klasse Person zur Speicherung in einer HashTable verwendet. Der Nachname wird als Schlüssel verwendet.
  1. Starten Sie Microsoft Visual Studio .NET und erstellen Sie ein neues Windows-Anwendungsprojekt in Visual Basic .NET. Form1 wird standardmäßig zum Projekt hinzugefügt.
  2. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektknoten. Zeigen Sie auf Hinzufügen und klicken Sie auf Klasse hinzufügen, um ein Klassenmodul zu erstellen. Class1 wird standardmäßig zum Projekt hinzugefügt.
  3. Klicken Sie im Dialogfeld Neues Element hinzufügen auf Öffnen.
  4. Ersetzen Sie den Code im Modul Class1 durch folgenden Code:
    Public Class Person
        Public Fname, Lname As String
    
        Sub New(ByVal FirstName As String, ByVal LastName As String)
            Fname = FirstName
            Lname = LastName
        End Sub
    
        Public Overrides Function ToString() As String
            Return Fname + " " + Lname
        End Function
    End Class
    Die Klasse Person hat einen Konstruktor, der die Parameter FirstName und LastName den lokalen Variablen zuordnet. Die Funktion ToString setzt ToString aus der Klasse Object außer Kraft, um Fname und Lname verkettet zurückzugeben.
  5. Fügen Sie in Form1.vb folgende Imports-Anweisung am Anfang des Codemoduls hinzu:
    Imports System.Collections
  6. Erstellen Sie ein Hashtable-Objekt auf Form-Ebene und deklarieren Sie drei Variablen des Typs Person. Fügen Sie in der Klasse Form1 folgenden Code hinzu:
    Dim MyTable As New Hashtable()
    
    'For simplicity, create three Person objects to add to the HashTable collection.
    
    Dim Person1, Person2, Person3 As Person  
  7. Verwenden Sie in den folgenden Schritten die Methode Add des Hashtable-Objekts, um drei Person-Objekte in einem Try-Catch-Block zum HashTable-Objekt hinzuzufügen. Der Try-Catch-Block fängt die Ausnahme ab und zeigt eine Meldung an, wenn es doppelte Schlüssel gibt.
    1. Versehen Sie Form1 mit einer Befehlsschaltfläche und ändern Sie deren Eigenschaft Text auf Elemente hinzufügen.
    2. Doppelklicken Sie auf die Schaltfläche, um das Codefenster zu öffnen, und fügen Sie folgenden Code im Ereignis Button1_Click ein:
      Person1 = New Person("Karen", "Berge")
      Person2 = New Person("David", "Campbell")
      Person3 = New Person("Jim", "Kim")
      
      '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 ae As ArgumentException
           MessageBox.Show("Duplicate Key")
      End Try
  8. Das Hashtable-Objekt bietet einen Indexer. Verwenden Sie in den folgenden Schritten den Schlüssel zur Indizierung, um auf den Wert zuzugreifen, der an der hashcodierten Adresse gespeichert ist.
    1. Versehen Sie Form1 mit einer Befehlsschaltfläche und ändern Sie deren Eigenschaft Text auf Elemente abrufen.
    2. Doppelklicken Sie auf die Schaltfläche und fügen Sie folgenden Code im Ereignis Button2_Click ein:
      '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 ex As NullReferenceException
           MessageBox.Show("Key not in Hashtable")
      End Try
  9. Verwenden Sie in den folgenden Schritten die Methode Remove, um ein einzelnes Element aus der HashTable-Auflistung zu entfernen:
    1. Versehen Sie Form1 mit einer Befehlsschaltfläche und ändern Sie deren Eigenschaft Text auf Element entfernen.
    2. Doppelklicken Sie auf die Schaltfläche und fügen Sie folgenden Code im Ereignis Button3_Click ein:
      'Use the Count property.
      If (MyTable.Count = 0) Then
           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 (Berge)")
           'Remove the object that is stored at the Key value Person1.Lname.
           MyTable.Remove(Person1.Lname)
      End If
  10. Listen Sie in den folgenden Schritten die Elemente auf, die in der HashTable-Auflistung gespeichert sind.
    1. Versehen Sie Form1 mit einer Befehlsschaltfläche und ändern Sie deren Eigenschaft Text auf Auflisten.
    2. Doppelklicken Sie auf die Schaltfläche und fügen Sie folgenden Code im Ereignis Button4_Click ein:
      Dim Enumerator As IDictionaryEnumerator
      Enumerator = MyTable.GetEnumerator()
      
      If (MyTable.Count = 0) Then
           MessageBox.Show("The HashTable is empty")
      Else
           MessageBox.Show("Enumerating through the HashTable collection")
           While Enumerator.MoveNext()
                MessageBox.Show(Enumerator.Value.ToString())
           End While
      End If
      
      Dim MyKeys As ICollection
      Dim Key As Object
      
      If (MyTable.Count = 0) Then
           MessageBox.Show("The HashTable is empty")
      Else
           MessageBox.Show("Accessing keys property to return keys collection")
           MyKeys = MyTable.Keys()
      
           For Each Key In MyKeys
                MessageBox.Show(Key.ToString)
           Next
      End If 
      Dieser Code deklariert eine Variable des Typs IDictionaryEnumerator und ruft die GetEnumerator-Methode der HashTable-Auflistung auf. Wenn der Enumerator zurückgegeben wird, zählt der Code die Elemente in der Auflistung auf und verwendet die Keys-Methode des HashTable-Objekts für die Aufzählung der Schlüssel.
  11. Verwenden Sie in den folgenden Schritten die Methode Clear, um den Inhalt des HashTable-Objekts zu löschen.
    1. Versehen Sie Form1 mit einer Befehlsschaltfläche und ändern Sie deren Eigenschaft Text auf Löschen.
    2. Doppelklicken Sie auf die Schaltfläche und fügen Sie folgenden Code im Ereignis Button5_Click ein:
      MyTable.Clear()
      MessageBox.Show("HashTable is now empty")
  12. Gehen Sie folgendermaßen vor, um die Anwendung zu erstellen und auszuführen:
    1. Klicken Sie auf Elemente hinzufügen. Drei Person-Objekte werden zur HashTable-Auflistung hinzugefügt.
    2. Klicken Sie auf Elemente abrufen. Der Indexer ermittelt die Elemente in der HashTable-Auflistung. Die drei neu hinzugefügten Elemente werden angezeigt.
    3. Klicken Sie auf Element entfernen. Das Element am Schlüsselspeicherort "Berge" wird gelöscht.
    4. Klicken Sie auf Auflisten. IDictionaryEnumerator zählt die Elemente in der HashTable-Auflistung auf.
    5. Klicken Sie auf Löschen. Alle Elemente werden aus der HashTable-Auflistung entfernt.
Hinweis: Die hier verwendeten Beispiele für Firmen, Unternehmen, Produkte, Domänennamen, E-Mail-Adressen, Logos, Personen, Orte und Ereignisse sind fiktiv. Ein Bezug auf echte Firmen, Organisationen, Produkte, Domänennamen, E-Mail-Adressen, Logos, Personen, Orte oder Ereignisse ist nicht beabsichtigt oder ableitbar.

Eigenschaften

Artikel-ID: 307933 - Geändert am: Dienstag, 14. Oktober 2003 - Version: 1.0
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual Basic .NET 2003 Standard Edition
Keywords: 
kbhowtomaster KB307933
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

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