Visual C++ の Hashtable
- 2010年10月21日 (木) 14時25分
- カテゴリ : .NET Framework
google で参考になるコードを探したが、いいのが無い。
調べ方が悪いのかな…。
コードのほとんどをネットからのコピペで作ってる俺には辛いんだぜ。
うーん、例が悪いな。
Debug::WriteLine は引数のオブジェクトの ToString メソッドの値をトレースするそうだから、上の例に限っては Debug::WriteLine(item->Value); みたいなことが許されるけどさ。
実際に Hashtable を使う場合は、キャストして使うはずだよね。
なんかこのキャスト…回りくどいような…。
もっといい書き方があるんだろうな…。
ラッパー作るとか、そんな感じなのか?
まぁ…動けばいいか…。
あ、それと。 格納された順番と、列挙される順番って全然一致しないのね。
順番は保証しないと言いつつ実はちゃんと格納順で列挙してくれるパターンかと思いきや。
いじわる。
調べ方が悪いのかな…。
コードのほとんどをネットからのコピペで作ってる俺には辛いんだぜ。
Hashtable^ ht = gcnew Hashtable();
ht->Add("ringo", "apple");
ht->Add("mikan", "orange");
Debug::WriteLine("for each で列挙");
for each (DictionaryEntry^ item in ht) {
Debug::WriteLine(item->Value);
Debug::WriteLine(item->Value->ToString());
Debug::WriteLine(safe_cast<String^>(item->Value));
}
Debug::WriteLine("Enumerator で列挙");
IEnumerator^ en = ht->GetEnumerator();
while(en->MoveNext()) {
Debug::WriteLine(safe_cast<DictionaryEntry^>(en->Current)->Value);
Debug::WriteLine(safe_cast<DictionaryEntry^>(en->Current)->Value->ToString());
Debug::WriteLine(safe_cast<String^>(safe_cast<DictionaryEntry^>(en->Current)->Value));
}
Debug::WriteLine("key で取得");
Debug::WriteLine(ht["ringo"]);
Debug::WriteLine(ht["mikan"]);
うーん、例が悪いな。
Debug::WriteLine は引数のオブジェクトの ToString メソッドの値をトレースするそうだから、上の例に限っては Debug::WriteLine(item->Value); みたいなことが許されるけどさ。
実際に Hashtable を使う場合は、キャストして使うはずだよね。
なんかこのキャスト…回りくどいような…。
もっといい書き方があるんだろうな…。
ラッパー作るとか、そんな感じなのか?
まぁ…動けばいいか…。
あ、それと。 格納された順番と、列挙される順番って全然一致しないのね。
順番は保証しないと言いつつ実はちゃんと格納順で列挙してくれるパターンかと思いきや。
いじわる。
コメント : 0件
トラックバック : 0件
- このページへのトラックバックURL
- http://www.sweetwarp.com/85.html/trackback
