1

私はかなり長い間 VB.net (非常に古いバージョン) を使用していますが、ここ 7 ~ 8 年は使用していません。私は VS 2012 と .net 4.5 を持っていますが、コレクションの目まぐるしい配列 (しゃれは意図していません) を追加したことは明らかです。私はネットで読んだり読んだりしましたが、以前よりも本当に混乱しています。

どのタイプのコレクションを使用するかについて、いくつかの推奨事項を教えてください。

ハンドル (最大 16 文字の 16 進テキスト文字列) 始点 (X、Y、Z 座標を持つカスタム オブジェクト) (オプション) 終点 (X、Y を持つカスタム オブジェクト)と Z 座標)

ここでの目的のために、特定のハンドルまたは特定の開始点または終了点を共有するすべてのエンティティを取得 (および削除) できるようにしたいと考えています。

if handle = 345 OR
if point = start point OR
if point = end point

最大数千のエンティティがあり、それらを「連鎖」する予定です。連鎖とは、端から端まで「連鎖」して組み立てることです。最終的に、チェーンを形成するエンティティのフラグメントが 1 つまたは複数になります。

エンティティのコレクションを 1 回だけ渡し、連鎖した結果になるロジックを作成しました。それは、上記の基準を使用して調査を行うことに依存します。

編集...非常に単純化された実際のデータは次のようになります。

Handle: 110
Start point x: 23.17
Start point y: 18.29
End point x: 32.5
End point y: 30.72

Handle: 111
Start point x: 40.12
Start point y: 18.32

Handle: 112
Start point x: 40.12
Start point y: 40.12
End point x: 100.1
End point y: 83.2

Handle: 113
Start point x: 40.12
Start point y: 18.32
End point x: 32.5
End point y: 30.72

これらは、次の順序でチェーンされます。

Handle: 110
Start point x: 23.17
Start point y: 18.29
End point x: 32.5
End point y: 30.72

Handle: 113
Start point x: 40.12
Start point y: 18.32
End point x: 32.5
End point y: 30.72

Handle: 111
Start point x: 40.12
Start point y: 18.32

Handle: 112
Start point x: 40.12
Start point y: 40.12
End point x: 100.1
End point y: 83.2

vb.net の専門家が推奨するコレクションは何ですか?

4

3 に答える 3

0

List(Of T) を使用できると思います。

例えば:

List(Of MyCADEntry) listEntries = new List( Of MyCADEntry )();

そして、次のようなものにLINQを使用します

listEntries.Where( Function(x) x.StartPoint == point );
于 2013-09-11T23:54:41.657 に答える
0

GetHashCode結果がハンドルまたはポイント座標の値に依存する場所をオーバーライドするカスタムキータイプの辞書を使用します。チェーン内の次の要素への参照を含むリンク リストとして機能する値ラッパー クラスも追加します。

于 2013-09-11T23:42:38.013 に答える