在VB.NET中,我想创建一个复杂的数据结构,其中多种类型的数据存储在一个类似格式的数组中(见下文)。
我正在尝试创建一个看起来像这样的数据结构:
[Name; xLoc; yLoc; zLoc; [Jagged Array]]
注意:名称需要标注为字符串,xLoc等为整数。 Jagged数组看起来像这样:
[Array1;Array2;...]
内部的每个数组看起来像:
[xVel; yVel; zVel]
注意:上面向量中的每个值都是一个整数。
包含数据的数据结构的示例可能如下所示:
[Ship1; 15; 16; 25; [[2;3;0];[5;0;7];[6;2;1]]]
基本上我想创建一个锯齿状数组,其中包含存储在同一结构中的多种类型的数据。 VB.NET是否以任何方式支持这种结构?我对VB.NET不是很有经验,所以很可能有一种更有效的方法来构造在VB中做同样事情的数据。如有任何想法或批评,请随时发表评论。
答案 0 :(得分:2)
您可以使用System.Collections.Generic.List(Of Object)
,但需要跟踪从列表中检索值时的类型。
出于好奇,为什么要在同一个列表中存储不同类型?
使用System.Collections.Generic.List
Dim x as new List(of Object)() x.Add(element) 'given an element, all objects inherit from Object x.Add(new Int32({1,2,3,4,5}) x.AddRange(array) 'append an array's contents Dim retrievedValue as int32() = x(1) ' here, I needed to remember what I stored at what indice.
为了让事情变得简单,我通常不会做这种事情。您丢失了类型安全性并需要隐式转换检索到的值,但如果您愿意,可以使用该语言完成。
我会考虑如何编写一个代表我正在使用的数据的类。如果一个类太重了,可能会有几个强类型的Dictionary()对象共享密钥来存储分别说明int32()和string_map
和int_array_map
中的字符串。
例如,Dictionary在KeyValuePairs中存储元素,可以强类型化。
Dim dict as new Dictionary(of string, List(of int32))() dict.Add('myname', new List(of Int32)({1,2,4,5,6,7})
因此dict('myname')
检索强类型的Int32列表。
我真的只是在黑暗中刺伤,但你可以看到.NET中有几个有用的集合类。我建议您阅读System.Collections.Generic命名空间。