Visual C# içinde HashTable koleksiyonu ile çalışma

Makale çevirileri Makale çevirileri
Makale numarası: 309357 - Bu makalenin geçerli olduğu ürünleri görün.
Bu makalenin Microsoft Visual Basic .NET sürümü için bkz: 307933.
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

Bu adım adım makalede, HashTable koleksiyonu nasıl kullanıldığını gösterir. 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'nı açın ve Visual C# [NULL]'bir Windows Forms 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 sınıf modülü eklemek için sınıf ' ı tıklatın. Class1, varsayılan olarak projeye eklenir.
  3. Class1 modülünde herhangi bir kodu aşağıdaki kodla değiştirin:
     public class Person
    {
    	public string Fname, Lname;
    
    	public Person(string FirstName, string LastName)
    	{
    		Fname = FirstName;
    		Lname = LastName;
    	}
    
    	public override string ToString()
    	{
    		return Fname + " " + Lname;
    	}
    }
    						
    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.
  4. 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:
    <?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. 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 Öğe eklemeText özelliğini değiştirin.
    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("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. 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 ıtemsName ö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 (NullReferenceException ex)
      {
      	MessageBox.Show("Key not in Hashtable");
      	MessageBox.Show(ex.Message);
      } 
      						
  7. 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:
      <?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. 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:
      <?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?>
      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.
  9. Aşağıdaki adımlarda, HashTable temizlemek 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");
      						
  10. 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 "Burris" konumundaki maddenin silindiğini unutmayın.
    4. Numaralandır ' ı tıklatın. Not HashTable koleksiyonu içindeki öğeler arasında IDictionaryEnumerator numaralandırır ve HashTable <a1>anahtarlar</a1> özelliğini bir Keys derlemesi verir.
    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ı: 309357 - Last Review: 15 Temmuz 2008 Salı - Gözden geçirme: 4.0
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Visual C# 2008 Express Edition
  • Microsoft Visual C# 2005
  • Microsoft Visual C++ .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
Anahtar Kelimeler: 
kbmt kbhowtomaster KB309357 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:309357

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