Nanashi-softプログラマ専用PSSuite開発


◇PS Suite開発 -連想配列を使う方法-

.NET Frameworkの Hashtableクラスを使用した連想配列の使い方です

●ディレクティブを定義

using System.Collections;	//Hashtableを使う為に必要

●変数の宣言と定義

Hashtable 変数名 = new Hashtable();

例)
Hashtable a = new Hashtable();

●代入(追加)

変数名[項目名] = "文字列";
または
変数名.Add("項目名", "文字列");
※Addを使用した場合,既にその項目が存在する場合はエラーになります

例)
Hashtable a = new Hashtable();
a["item1"] = "sword";

例)
Hashtable a = new Hashtable();
try{
	a.Add("item1", "shield");
}catch{
	//既にある項目を追加しようとした
}

●削除

変数名.Remove("項目名");

例)
Hashtable a = new Hashtable();
a.Remove("item1");

●全クリア

変数名.Clear()

例)
Hashtable a = new Hashtable();
a.Clear();

●値取得

string 取得変数 = "" + 変数名["項目名"];

例)
Hashtable a = new Hashtable();
string b;
b = "" + a["item1"];

よくサンプルで,
b = (string)a["item1"];
と書いているのを見かけますが,中身が文字列と決め付けている悪い例です
これだと中身に数値が入っていると例外が発生します
書くなら↓こうです
try{
	b = (string)a["item1"];
}catch{
	//変数の中身が文字では無い
}

Hashtableは Object型ですので,↓こう書くべきかも知れません(varの意味が分かっていれば尚更ね)
var ワーク変数 = 変数名["項目名"];
string 取得変数 = (string)ワーク変数;

例)
Hashtable a = new Hashtable();
a["item1"] = "sword";
a["kakaku1"] = 250;

var work;
string b;
int c;
work = ["item1"];
b = (string)work;
work = ["kakaku1"];
c = (int)work;

varで受け取れば,文字でも数値でも変換可能です

●値一覧取得

foreach (string キー変数 in 変数名.Keys) {
    string 取得変数;
    取得変数 = (string)変数名[キー変数];
}

例)
Hashtable a = new Hashtable();
foreach (string key in a.Keys) {
	string work;
	work = "" + a[key];
}

●項目が存在するか?

if(変数名.ContainsKey("項目名")){
    //存在する
}else{
    //存在しない
}

例)
Hashtable a = new Hashtable();
if(a.ContainsKey("koumoku")){
	//存在する
}else{
	//存在しない
}

●連想配列のコピー

例)
Hashtable moto = new Hashtable();
Hashtable saki = new Hashtable();

moto.Add("item1", "sword");
saki = (Hashtable)moto.Clone();



TOPプログラマ専用PSSuite開発