- - PR -
Hashtable のキー配列が欲しい
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-11-11 19:02
ヘルプを見ても調べてもわかりません・・・
どうすればゲットできますか? こんな感じのクラスを作りたいんだけど。 public class こんな感じ Private _item As Hashtable = New Hashtable Public ReadOnly Property Item(ByVal Key As String) As Object Get Return _item.Item(Key) End Get End Property Public ReadOnly Property Item(ByVal Index As Integer) As Object Get 'ここで根本的になにか勘違いをしているらしい・・・ Dim a As Array _item.Keys.CopyTo(a, 0) Return a.GetValue(Index) End Get End Property : : つづく | ||||||||
|
投稿日時: 2005-11-11 19:20
こんにちは。
ご本人が間違っているであろうと思われているソースだけを見ても、何がなさりたいのか良くわかりません。 内部の実装は Hashtable に依存している「こんな感じ」クラスにインデックスを指定して値をとりたいのですか? 同じインデックスを指定したら毎回同じ値が取りたいと思うのですが、Hashtable だとそうはいかないんじゃあないですか? Dim a As Array インスタンスを作らないと、CopyTo() に渡せないとヘルプにあります。 そもそも Array は直にインスタンスを作れません。 | ||||||||
|
投稿日時: 2005-11-11 19:38
>内部の実装は Hashtable に依存している「こんな感じ」クラスにインデックスを指定して値をとりたいのですか?
そうです。 以下のような使い方ができれば、hashtable にはこだわらないんですが。 こんな感じ.add("キー1", "値1") こんな感じ.add("キー2", "値2") こんな感じ.add("キー3", "値3") for i = 0 to こんな感じ.count - 1 表示する(こんな感じ.Item(i)) next 表示する(こんな感じ.Item("キー1")) 表示する(こんな感じ.item("キー2")) 表示する(こんな感じ.item("キー3")) | ||||||||
|
投稿日時: 2005-11-11 19:47
Hashtable に順序などないので、Hashtable にはインデクサはないんでしょうね。 それでもキーを指定して「効率よく」取得したい、でも順序は一定であって欲しいとなると難しいのでは。 キーを指定して「効率よく」取得したいわけではないなら、内部の実装は普通のコレクション(ArrayListとかCollectionBaseの派生とか)にしておいて、 Public ReadOnly Property Item(ByVal Key As String) As Object こっちの方を工夫してみては? | ||||||||
|
投稿日時: 2005-11-11 19:57
そうですね。
やはり自作しかないのかー ありがとうございました。 | ||||||||
|
投稿日時: 2005-11-11 20:04
R・田中一郎さん、こんばんは。
判りにくいんですが、要は Microsoft.VisualBasic.Collection みたいにキーでもインデックスでもコレクションの要素にアクセス出来るようにしたい、って事でしょうか? であれば、こんな感じ↓でどうでしょう?
| ||||||||
|
投稿日時: 2005-11-11 21:05
NameObjectCollectionBase の派生クラスを自作すればできるんでないかな?たぶん。
要素とキーが文字列だけならNameValueCollectionでいいと思いますが。 | ||||||||
|
投稿日時: 2005-11-12 08:21
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemcollectionshashtableclassgetenumeratortopic.asp
単に for 文でまわすなら、列挙すればいいやん って、ことじゃないの? ___________________________________________________________________ □ written by Jitta on 2005/11/12 □ Microsoft MVP :Visual Developer ASP/ASP.NET Oct.2005-Sept.2006 _________________ |