Visual Basic 2005 veya Visual Basic. NET'te HashTable koleksiyonu ile çalışma

Makale çevirileri Makale çevirileri
Makale numarası: 307933 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

Bu makalede, HashTable koleksiyonu hakkında bilgi sağlar. Karma verileri almak için verilerin pahalı arama gereklerini olduğundan, karma verimli bir şekilde veri almak için kullanabilirsiniz. Karma, verileri bulmak için anahtarın değerini kullanır.

Temel sınıf kitaplıkları, böylece kendi denetim tablolarını kod için gerekli olmayan System.Collections ad alanında tanımlanan bir HashTable sınıf sunar.

Örnek oluşturma adımları

Bir HashTable koleksiyonu (anahtar, değer) bir çift depolar ve karma depolama konumunu elde etmek için bu anahtarı kullanır. Bu anahtar sabit ve yinelenen girdileri HashTable bulunamaz. Bu örnek, birkaç basit bir kişi sınıfı örnekleri bir HashTable depolamak için kullanır. Son ad anahtarı olarak kullanılır.
  1. Microsoft Visual Studio .NET veya Visual Studio 2005'i açın ve Visual Basic 2005 veya Visual Basic. NET'te bir Windows uygulaması) projesi oluşturun. Form1, varsayılan olarak projeye eklenir.
  2. Solution Explorer'da (Çözüm Gezgini), proje adını sağ tıklatın, sonra da Ekle işaret ve bir sınıf modülü eklemek için Add Class</a1>'ı tıklatın. Class1, varsayılan olarak projeye eklenir.
  3. Yeni Öğe Ekle iletişim kutusunda ' ı tıklatın.

    Not Visual Studio 2005'te, Ekle, ' ı tıklatın.
  4. Class1 modülünde herhangi bir kodu aşağıdaki kodla değiştirin:
    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
    						
    ad ve Soyad parametreleri alır ve bu parametreler için yerel değişkenler atayan bir kurucu kişi sınıfı vardır. ToString işlevi, Fname ve Lname birlikte birleştirilmiş geri dönmek için nesne sınıfından ToString geçersiz kılar.
  5. Form1.vb içinde aşağıdaki ifadeyi alır kod modülü üstüne ekleyin:
    Imports System.Collections
    					
  6. Bir form düzeyi Hashtable nesnesi ve <a1>Tür</a1> kişi için üç değişkenleri bildir. Form1 sınıfa aşağıdaki kodu ekleyin:
    Dim MyTable As New Hashtable()
    
    'For simplicity, create three Person objects to add to the HashTable collection.
    
    Dim Person1, Person2, Person3 As Person  
    					
  7. Aşağıdaki adımlarda, bir try-catch bloğu içinde Hashtable üç kişi nesnesi eklemek için Hashtable nesnesi <a1>Ekle</a1> yöntemini kullanın. Try-catch bloğu özel durum yakalar ve yinelenen anahtarlar varsa, bir ileti görüntüler.
    1. Form1 bir Düğme denetimi yerleştirin ve metin özelliği Ekle öğeler için değiştirebilirsiniz.
    2. Code penceresini açmak için bu düğmeyi çift tıklatıp <a2>Button1_Click</a2> olay aşağıdaki kodu yapıştırın:
      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. Hashtable nesnesi, bir dizin oluşturucu sağlar. Aşağıdaki adımlarda, hashed konumda depolanan değer erişmek için anahtar dizini.
    1. Form1'e bir Düğme denetimi ekleyin ve Get ıtemsText özelliğini değiştirin.
    2. Düğmeyi çift tıklatın ve Button2_Click olayda aşağıdaki kodu yapıştırın:
      '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. Aşağıdaki adımlarda, HashTable topluluğundan tek bir öğe kaldırmak için kaldırma yöntemi kullanın:
    1. Form1'e bir Düğme denetimi ekleyin ve Kaldır öğesi için metin özelliği değiştirin.
    2. Düğmeyi çift tıklatın ve Button3_Click olayda aşağıdaki kodu yapıştırın:
      '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. Aşağıdaki adımlarda, HashTable koleksiyonu içinde depolanan maddelerin numaralandırılamıyor.
    1. Form1'e bir Düğme denetimi ekleyin ve Numaralandırma için Text özelliğini değiştirin.
    2. Düğmeyi çift tıklatın ve Button4_Click olayda aşağıdaki kodu yapıştırın:
      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 
      							
      bu kod IDictionaryEnumerator türünde değişken bildirir ve HashTable koleksiyonu GetEnumerator yöntemini ça??r?r. Döndürülen sayacı, kod koleksiyonu içindeki öğeler arasında numaralandırır ve toplulu?u anahtarlar? Numaralandırılacak HashTable <a1>anahtarlar</a1> yöntemini kullanır.
  11. Aşağıdaki adımlarda, HashTable silmek için Clear yöntemini kullanın.
    1. Form1'e bir Düğme denetimi ekleyin ve metin özelliği Temizle değiştirin.
    2. Düğmeyi çift tıklatın ve Button5_Click olayda aşağıdaki kodu yapıştırın:
      MyTable.Clear()
      MessageBox.Show("HashTable is now empty")
      						
  12. Oluşturmak ve bu uygulamayı çalıştırmak için şu adımları izleyin:
    1. Öğeleri Ekle ' yi tıklatın. Üç kişi nesneleri HashTable derlemesine eklenen unutmayın.
    2. Öğeleri Al ' ı tıklatın. Dizinleyici HashTable koleksiyonu öğeleri aldığını unutmayın. Üç yeni görüntülenece?ini eklendi.
    3. Öğe Kaldır ' ı tıklatın. Anahtar "Berge" konumundaki maddenin silindiğini unutmayın.
    4. Numaralandır ' ı tıklatın. Not HashTable koleksiyonu içindeki öğeler arasında IDictionaryEnumerator numaralandırır.
    5. Temizle ' yi tıklatın. Tüm öğeleri HashTable koleksiyonu temizlenmiştir unutmayın.
Not: örnek şirketler, kuruluşlar, ürünler, etki alanı adları, e-posta adresleri, logolar, kişiler, yerler ve burada olaylar kurgusaldır. Amaçlanmaktadır veya olayla ilgisi herhangi gerçek şirket, kuruluş, ürün, etki alanı adı, e-posta adresi, logo, kişi, yer veya olayları ilişkisi yok.

Özellikler

Makale numarası: 307933 - Last Review: 6 Aralık 2006 Çarşamba - Gözden geçirme: 3.3
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Anahtar Kelimeler: 
kbmt kbvs2005swept kbvs2005applies kbhowtomaster KB307933 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:307933

Geri Bildirim Ver

 

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