2004年11月29日

Hashtableのforeach

  
Hashtable で foreach を使おうと思ったら、やり方が分からない。でもって、調べてみました。2つやり方があるようです。
一つは、DirectoryEntryクラスのインスタンスを取り出す方法。

 Hashtable ht = new Hashtable();
ht.Add("HP","Hewlett-Packard");
ht.Add("MS","Microsoft");
ht.Add("CA","Computer Associates");
foreach ( DictionaryEntry d in ht ) {
listBox1.Items.Add(d.Key + " : " + d.Value);
}

もう一つは、Keys プロパティを使う方法。
 foreach (string name in ht.Keys) {
listBox1.Items.Add(name + " : " + ht[name]);
}

前者の方が僕の好みですね。


この記事へのコメント
IT is wrong ?

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemcollectionshashtableclasstopic.asp

best regards.
Posted by mao at 2005年04月05日 12:01
どの部分が wrong と言っているのかわかりませんが、MSDNのドキュメントにも
<b>C# 言語の foreach ステートメント (Visual Basic では for each) は、コレクション内の各要素の型を必要とします。 Hashtable の各要素はキーと値の組み合わせであるため、要素の型は、キーの型や値の型にすることはできません。その代わり、要素の型は DictionaryEntry になります。</b>
と書いてあるので、foreachを使うことは何の問題も無いはずです。それとも、
・Keysプロパティを使って、回す方法が邪道?
・2つを好みの問題で論じることが間違い?
・while 文を使った方が良い?
どれなのかな?
Posted by Gushwell at 2005年04月08日 09:53
ああ、HTMLサニタイジング処理がされているので、<b> タグも入力できないんですね...
Posted by Gushwell at 2005年04月08日 09:59
とても参考になりました!
DirectoryEntryクラス良いですね。
ありがとうございます。
Posted by すぎやん at 2016年11月15日 16:20
古い記事ですが、お役に立ててよかったです(^o^/
Posted by gushwell at 2016年11月15日 22:26
 

この記事へのトラックバックURL