*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*

<C#>

Hashtableクラスを用いた連想配列の基本サンプル


*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*


「C# における連想配列の使い方 <目次>」における一連の説明(知恵ノート)において、ここでは、「<C#> Hashtableクラスを用いた連想配列の基本サンプル」について説明します。






総合の目次


本ページを含めた関連事項の総合目次です。

http://note.chiebukuro.yahoo.co.jp/detail/n180566



関連サンプル


 

本サンプルと関連性のあるサンプルです。
すなわち、次回のサンプルです。


 

<サンプル1>
「<C#> Hashtableクラスを用いた連想配列の基本サンプル」

 

今回のサンプルです。


 

<サンプル2>
「<C#> Hashtableクラスで多次元の連想配列を作成」
次回のサンプル


http://note.chiebukuro.yahoo.co.jp/detail/n180570






 

はじめに


 

 

Hashtableと言うクラスで、一次元の連想配列(意味は、後述)を作成します。





連想配列について


ところで、一般の配列は、
a[0]、a[1]、a[2]、---
と言うように、添字は、0、1、2、--- と言う整数値で指定します。
これに対して、
a["AAA"]、a["BBB"]、a["CCC"]、---
と言うように、添字を文字列とする配列があります。
これを連想配列、又は仮想配列、ハッシュテーブルと言います。
どのような用途で使われるのかと言いますと、例えば、学校のクラスにおける生徒達の名簿を扱うプログラムを作ったとします。
この時、個人を特定する場合、出席番号で特定する場合と、生徒の名前で特定する場合の2通りがあります。
前者が一般の配列で、後者が連想配列の手法になります(出席番号は、0からではなく、1から始まりますが、イメージ的な説明ですので、細かな指摘は、御容赦下さい)。
例えば、生徒の住所を管理する連想配列は、
a["安藤"] = "東京都大田区";
のように使います。

 




関連サンプルと比べた特徴


<サンプル1>
「<C#> Hashtableクラスを用いた連想配列の基本サンプル」

 

一次元の連想配列を作成します。


<サンプル2>
「<C#> Hashtableクラスで多次元の連想配列を作成」

多次元(2次元)の連想配列を作成します。

 





サンプルコード


ここで取り上げるサンプルは、なるべく複雑にならない範囲で、連想配列を確かめられるものとします。






本サンプの仕様概要


<配列データーの内容>

 

取り扱うデーターは、以下のような会員名簿とします。
それは、氏名と、その住所から成り立ちます。

 

安藤, 大田区
佐々木, 品川区
中村, 世田谷区

山田, 新宿区
田中, 杉並区
高橋, 渋谷区

遠藤, 豊島区
鈴木, 文京区
吉田, 目黒区

 

すなわち、例えば、配列を a[] としますと、

 

a["山田"]

 

に、"新宿区" と言う値を格納すると言う表現になります。

 

 

<操作の仕様>

 

まず、リストボックスに氏名の一覧が表示されます。
そこから氏名を選択すると、選択した人の住所がテキストボックスに表示されます。

 

プログラム上での処理(配列の立場)を含めて、もう少し具体的に説明しますと、以下のような処理手順になります。
例えば、リストボックスの氏名の一覧から、ユーザーが安藤を選択したとします。
その場合は、配列要素の
a["安藤"]
から値が取り出されます。
その取り出した値は、"大田区"で、それがテキストボックスに表示されます。

 

 

 

 

フォームデザイン等の前準備


コードを記述する前に、フォームのデザイン作成などの、以下の前準備を行なって下さい。

<プロジェクトの作成>
本サンプルの確認用に、新規にプロジェクトを作成して下さい。
プロジェクトの種類は、「Windowsフォームアプリケーション」です。

<フォームのデザイン>
デザイン画面で、リストボックス(listBox)を1個と、テキストボックス(textBox)を1個貼り付けて下さい。

 デザイン画面

 

 

<イベントプロシージャの作成>
デザイン画面のフォームをダブルクリックして、Form1_Load() メソッドを作って下さい。

また、デザイン画面で先ほど貼り付けたリストボックス1(listBox1)をダブルクリックして、listBox1_SelectedIndexChanged() メソッドを作って下さい。







コード



 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;


// Hashtableクラスを用いた連想配列の基本サンプル
namespace HashtableSimpleSample
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }


        // 会員名簿
        System.Collections.Hashtable MembershipList;


        //============
        // フォームがロードされる時に起動するイベントプロシージャ
        private void Form1_Load(object sender, EventArgs e)
        {

            // 会員名簿の生成と、データー追加
            MembershipList = new System.Collections.Hashtable();
            MembershipList.Add("安藤", "大田区");
            MembershipList.Add("佐々木", "品川区");
            MembershipList.Add("中村", "世田谷区");
            MembershipList.Add("山田", "新宿区");
            MembershipList.Add("田中", "杉並区");
            MembershipList.Add("高橋", "渋谷区");
            MembershipList.Add("遠藤", "豊島区");
            MembershipList.Add("鈴木", "文京区");
            MembershipList.Add("吉田", "目黒区");

 

            // 会員名(配列のキー名)の一覧をリストボックスに表示
            foreach (string MemberName in MembershipList.Keys)
            {
                // 取得結果のキー名(会員名)をリストボックスに設定
                listBox1.Items.Add(MemberName);
            }

        }

 

        //============
        // リストボックスの項目が選択された時に起動するイベントプロシージャ
        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {

            // 選択キー名(会員名)を取得
            string SelectedMemberName = listBox1.SelectedItem.ToString();


            // 選択キー名(会員名)に該当する配列要素から値(住所)を取り出し、
            // それをテキストボックスに表示
            textBox1.Text = (string)MembershipList[SelectedMemberName];

        }
    }
}




 

コードの解説


サンプルコードの中に書かれていますコメントを読んで下さい。
すなわち、コードの解説は、基本的にサンプルコードの中に書かれているコメントとします。





実行結果


リストボックスから項目を選択すると、選択した項目に対応する値が表示されます。

 

 実行結果





さいごに

 

特になし。

(後に、コメントを記述する予定です)