- - PR -
Dictionary型をオリジナルのクラスにしたい
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-06-01 16:09
VB.NETでDictionary型を使おうとすると、Microsoft Scripting runtimeを参照設定しないといけません。で、Dictionary型を継承し、オリジナルのクラスを作りDLLにして、他のプロジェクトで使いたいのですが。できているソースはこんな感じですが
'' Dictionary型 Imports Scripting Public Class SSCollection Private mDictionaryData As New Scripting.Dictionary Public Sub Add(ByVal key As String, ByVal value As String) mDictionaryData.add(key, value) End Sub 〜〜〜〜〜〜〜〜〜 End Class このクラスを使いたい側では Dim dic As New SSCollection dic.Add("key1", "val1") はいけるのですが、 Dim dics(0) As SSCollection dics(0).Add("key1", "val1") のような配列ができません。 どうすればよいでしょうか? | ||||
|
投稿日時: 2005-06-01 16:18
> Dim dics(0) As SSCollection
> dics(0).Add("key1", "val1") インスタンスが生成されてない様子ですが…記述ミス? #サンプルコードを見る限りでは System.Collections.Hashtable 使えばよいのではと 思いますがいかがでしょう _________________ # Future Is On Fire ! | ||||
|
投稿日時: 2005-06-01 16:27
System.Collections.Specialized.HybridDictionary を使うのではダメなんですか? _________________ // 渋木宏明 (Hiroaki SHIBUKI) // http://hidori.jp/ // Microsoft MVP for Visual C# // // @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/ | ||||
|
投稿日時: 2005-06-01 16:56
System.Collections.Specialized.StringDictionaryのような気もします。
※用途的に | ||||
|
投稿日時: 2005-06-01 17:50
どうしても自前で実装する(値のヴァリデーションなどを厳密にするなど)場合は
System.Collections.DictionaryBase が提供されています。 | ||||
|
投稿日時: 2005-06-01 19:26
ご回答ありがとうございます。
Hashtableですとカラムが前後入れ替わる。 コレクションですと、値が変えれない、キーが取得できない。 ということでDictionary(これってVB6の時代のもの)というのを聞いたのですが、 例の件で参照設定したくないということで、オリジナルクラスにしようと 思いました。 VB.NETのほうで 1)コレクションのように使えて 2)かつキーが見える 3)値が変えられる 4)Hashtableのようにカラムが前後入れ替わらない という型(クラス)があればそれを使おうと思います。 またおねがいいたします。 | ||||
|
投稿日時: 2005-06-01 20:15
「カラムの前後入れ替わり」というのがよく理解できてないのですが…
(System.Collections.SortedList とかは?) TLCさんの仰るように自作するのが早いかも _________________ # Future Is On Fire ! | ||||
|
投稿日時: 2005-06-01 20:31
3)キーが見える
というあたりから察するに, value から Key の逆引きをするような要件なのでは? と思いました。 自分も逆引きが必要な場面に至ったとき, DictionaryBase から自前でつくりましたね。 一度作っておくと,いろいろとカスタマイズして使えて便利ですので, これを機会に作成してみてはいかがでしょうか? |