0

文字列を特定のCOMオブジェクトクラスにポイントするを作成したいと思いDim Dict As New Dictionary(Of String, Object)ます。つまりDict.Add("NODES",Visum.Net.Nodes) 、辞書に約20個のキーがあり、それぞれがCOMオブジェクト内の異なるクラスをポイントします。

基本的には機能しますが、非常に重く(大きなクラスのインスタンスが20個あるdict)、必要ではないのではないかと思います。オブジェクト全体をdictに渡しますが、実際には一種のポインター(ByRef)が必要です。

それを行うためのより賢い方法はありますか?

PS。なぜ私はそれをしますか?辞書に入れるすべてのオブジェクトには共通のメソッドがあるからです。Dict("Nodes").ItemByKey(13)このようにして、すなわち: 、そして次にDict("Links").ItemByKey(13)、などを呼び出すことができます。

よろしくお願いしますRafal

4

2 に答える 2

2

あなたは誤解されていると思います。オブジェクトへの参照を既に渡し、保存しています。これがVB.NETの動作方法です。(それがあなたの背景であるならば、それはオブジェクトを扱うVB6でもあります)。 ByValvsByRefオブジェクトタイプのパラメータは、オブジェクトのコピーを作成しません。呼び出したメソッドが、渡されたオブジェクトを別のオブジェクトと効果的に交換できるかどうかを示すだけです。

于 2013-03-20T12:56:18.997 に答える
0

HybridDictionaryをご覧ください:MSDNから:コレクションが小さいときにListDictionaryを使用し、コレクションが大きくなるとハッシュテーブルに切り替えることでIDictionaryを実装します。

ただし、すぐに利用できる汎用バージョンはありません。HybridDictionaryの汎用バージョンはありますか?

于 2013-03-20T12:49:37.670 に答える