HashTable コレクションの Visual C# を使用する方法

文書翻訳 文書翻訳
文書番号: 309357
マイクロソフトの Visual Basic では。この資料のバージョンを NET を参照してください。 307933.
すべて展開する | すべて折りたたむ

目次

概要

この資料では、HashTable コレクションを使用する方法を示しています。ハッシュ、データの取得はコストがかかるデータ検索が不要になるため、ハッシュを効率よくデータを取得するために使用ができます。ハッシュ キー自体の値を使用してデータを検索します。

基本クラス ライブラリを提供します。 ハッシュ テーブル クラスで定義されている、 System.Collections 名前空間ハッシュ テーブルは、独自のコードを記述する必要はありませんようにします。

サンプルをビルドする手順

ハッシュ テーブルのコレクションを格納します。 (キー、値) ペアと使用を キー ハッシュし、格納場所を取得します。は、 キー 変更不可で、エントリが重複することはできません、 ハッシュ テーブル.このサンプルの簡単ないくつかのインスタンスを使用してください。 格納するクラスは、 ハッシュ テーブル.最後の名前として使用されます、 キー.
  1. Microsoft Visual Studio を開き Visual C# では、Windows フォーム アプリケーション プロジェクトを作成します。既定では、プロジェクトに Form1 が追加されます。
  2. ソリューション エクスプ ローラーでプロジェクト名を右クリックし、ポイント 追加、し クラス クラス モジュールを追加します。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;
    	}
    }
    						
    は、 クラスが使用する 1 つのコンス トラクターは、 氏名[氏名] パラメーターしこれらのパラメーターをローカル変数に割り当てられます。は、 ToString 関数のオーバーライド ToString から、 オブジェクト 取得するクラス FnameLname 互いに連結します。
  4. フォーム レベルを作成します。 ハッシュ テーブル オブジェクト、および種類の 3 つの変数を宣言します。 .次のコードを 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. 次の手順を使用して、 追加 メソッドは、 ハッシュ テーブル オブジェクトを 3 つ追加するのには オブジェクトを ハッシュ テーブル で、 try と catch ブロックです。は、 try と catch ブロックは、例外をキャッチし、重複キーが存在する場合、メッセージが表示されます。
    1. 場所は、 ボタン Form1 上のコントロール、変更、 テキスト プロパティ 項目を追加します。.
    2. コード ウィンドウを開くには、ボタンをダブルクリックし、次のコードを貼り付けます、 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. は、 ハッシュ テーブル オブジェクトのインデクサーを提供します。次の手順では、インデックスを作成、 キー ハッシュされた場所に格納されている値にアクセスするには。
    1. 追加します。 ボタン Form1 に、制御し、変更を 名前 プロパティ 項目を取得します。.
    2. ボタンをダブルクリックし、次のコードを貼り付けます、 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. 次の手順を使用して、 削除 HashTable コレクションから単一の項目を削除する方法:
    1. 追加します。 ボタン Form1 に、制御し、変更を テキスト プロパティ 項目を削除します。.
    2. ボタンをダブルクリックし、次のコードを貼り付けます、 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. 次の手順では、HashTable コレクション内に格納されているアイテムを列挙します。
    1. 追加します。 ボタン Form1 に、制御し、変更を テキスト プロパティ 列挙.
    2. ボタンをダブルクリックし、次のコードを貼り付けます、 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?>
      このコードの型の変数を宣言します。 IDictionaryEnumerator 呼び出すと、 GetEnumerator ハッシュ テーブルのコレクションのメソッドです。で、 列挙子 返されたコード列挙し、コレクション内の項目とを使用して、 キー メソッドは、 ハッシュ テーブル キーを列挙します。
  9. 次の手順を使用して、 クリア オフにする方法を ハッシュ テーブル:
    1. 追加します。 ボタン Form1 に、制御し、変更を テキスト プロパティ クリア.
    2. ボタンをダブルクリックし、次のコードを貼り付けます、 Button5_Click イベント:
      MyTable.Clear();
            MessageBox.Show("HashTable is now empty");
      						
  10. ビルドして、アプリケーションを実行するのには、次の手順を実行します。
    1. クリックしてください。 項目を追加します。.メモその 3 オブジェクトは、HashTable コレクションに追加されます。
    2. クリックしてください。 項目を取得します。.インデクサーが HashTable コレクション内の項目を取得することに注意してください。アイテムが表示されますの 3 つを新しく追加します。
    3. クリックしてください。 項目を削除します。."Burris"キーの場所にある項目が削除されることに注意してください。
    4. クリックしてください。 列挙.注意してください。 IDictionaryEnumerator によって、HashTable コレクション内の項目を列挙し、 キー プロパティのハッシュ テーブルのキーのコレクションを返します。
    5. クリックしてください。 クリア.HashTable コレクションからすべての項目がオフになっていることに注意してください。
メモ 使用例の企業、組織、製品、ドメイン名、電子メール アドレス、ロゴ、人物、場所、およびイベントは架空のものです。実在する会社、組織、製品、ドメイン名、電子メール アドレス、ロゴ、人、場所、またはイベントが、対象としています。 または推論する必要があります。

プロパティ

文書番号: 309357 - 最終更新日: 2011年7月25日 - リビジョン: 6.0
キーワード:?
kbhowtomaster kbmt KB309357 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:309357
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

フィードバック

 

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