DOBON.NET DOBON.NETプログラミング掲示板過去ログ

連想配列について

環境/言語:[C# 2003]
分類:[.NET]

こんにちは、ビートです。

普段、連想配列は Hashtable を使用しているのですが、
以下のように

for(int i = 0; i < 10; i++)
{
abc[i]["tate"] = i * 100;
abc[i]["yoko"] = i * 200;
}

みたいな書き方は出来るのでしょうか?
ご教授の程お願いします。
意味がつかめないコードですね。
abc というのが Hashtable[] ならそう言う操作ができますが。
ご返答ありがとうございます。ビートです。

> 意味がつかめないコードですね。
>
1レコードの情報を分割して配列に格納したい。
分割した情報をソース内でわかり易くしたい。

例えば
ExData[0] = "00000AFBB151515";
ExData[1] = "00000AFBC151516";
ExData[2] = "00000AFBD151517";

for(int i = 0; i < ExData.length; i++)
{
 data[i]["data1"] = ExData[i].ToString().substring(0, 5);
 data[i]["data2"] = ExData[i].ToString().substring(5, 2);
 data[i]["data3"] = ExData[i].ToString().substring(7, 8);
}

のような感じです。

> abc というのが Hashtable[] ならそう言う操作ができますが。
>
どのような宣言をすればよろしいのでしょうか?

Hashtable[] abc …

宜しければ、ご教授の程お願いします。
2006/09/13(Wed) 21:55:09 編集(投稿者)

HashTableの配列もしくはArrayListではダメですか?
 
string[] ExData = new string[3];
 
ExData[0] = "00000AFBB151515";
ExData[1] = "00000AFBC151516";
ExData[2] = "00000AFBD151517";
 
Hashtable[] data = new Hashtable[ExData.Length];
for (int i = 0; i < ExData.Length; i++)
{
    data[i] = new Hashtable();
    data[i]["data1"] = ExData[i].ToString().Substring(0, 5);
    data[i]["data2"] = ExData[i].ToString().Substring(5, 2);
    data[i]["data3"] = ExData[i].ToString().Substring(7, 8);
}
MessageBox.Show(data[1]["data3"].ToString());
んー。
Hashtable よりも独自のクラス作った方が良いような気がしますが……。

>>abc というのが Hashtable[] ならそう言う操作ができますが。
> どのような宣言をすればよろしいのでしょうか?

普通に Hashtable の配列ですよ。string の配列と同じです。型が違うだけで。
配列を new した時点では各要素は null(つまりそれぞれについて Hashtable を new する必要がある)って点にさえ注意すれば何も問題ないでしょう。
  • 題名: Re[4]: 連想配列について
  • 著者: ビート
  • 日時: 2006/09/13 22:15:34
  • ID: 17552
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
ご返答ありがとうございます。 ビートです。

> string[] ExData = new string[3];
>
> ExData[0] = "00000AFBB151515";
> ExData[1] = "00000AFBC151516";
> ExData[2] = "00000AFBD151517";
>
> Hashtable[] data = new Hashtable[ExData.Length];
> for (int i = 0; i < ExData.Length; i++)
> {
> data[i] = new Hashtable();
> data[i]["data1"] = ExData[i].ToString().Substring(0, 5);
> data[i]["data2"] = ExData[i].ToString().Substring(5, 2);
> data[i]["data3"] = ExData[i].ToString().Substring(7, 8);
> }
> MessageBox.Show(data[1]["data3"].ToString());
>
上記のサンプルソース大変ありがとうございました。
正常に動作する事ができました。

自分でこのような処理をしたいと言ったものの
このような処理を100万回loopした場合は
スループット的にどうなのか気になります…(汗)

ところで…

> HashTableの配列もしくはArrayListではダメですか?
>
HashTableの配列やArrayList等で上記のような事が出来るのでしょうか?
そっちでの処理の方がスループット等早くなるのでしょうか?
度々、色々な質問を投げてしまい申し訳ございませんが、
ご教授の程お願いいたします。

DOBON.NET | プログラミング道 | プログラミング掲示板