Arrays VB.net键控数组

Arrays VB.net键控数组,arrays,vb.net,string,key,Arrays,Vb.net,String,Key,我想构建一个数组,它的行是用字符串键控的。行不必具有相同的列数(锯齿数组),也不必在每列中都具有值。我希望能够更新数组中现有行中的列 我试着用字典 Dim ToolUsers as New Dictionary(Of String, Array) Dim UserData() As String = {"", "", "", "", "", "", "", "") String的允许我基于String值访问任何特定行,但是数组是一种引用类型,总是指向存储在UserData数组中的当前值,而不是

我想构建一个数组,它的行是用字符串键控的。行不必具有相同的列数(锯齿数组),也不必在每列中都具有值。我希望能够更新数组中现有行中的列

我试着用字典

Dim ToolUsers as New Dictionary(Of String, Array)
Dim UserData() As String = {"", "", "", "", "", "", "", "")
String的
允许我基于
String
值访问任何特定行,但是
数组
是一种引用类型,总是指向存储在
UserData
数组中的当前值,而不是值类型并将数组值存储在
字典中

我查看了
Array
s的
Array
,但它似乎不允许通过键访问现有行,也不允许更新现有值


VB.net中是否存在这样的构造?

使用
字典可以实现您想要的,但是在.net中使用数组,因此您需要注意如何填充字典,如果您确实希望每个项目中的数据不同,则不要重用同一数组。e、 g

'从字符串到字符串数组创建字典
Dim x=新字典(字符串的,字符串())()
x(“A”)=新字符串(){“A1”、“A2”、“A3”}
A:A1、A2、A3
x(“A”)(1)=“A2x”
A:A1、A2x、A3
Dim y=新字符串(){“Y1”,“Y2”}
x(“Y1”)=y'指向与y相同的数组
x(“Y2”)=DirectCast(y.Clone(),String())'y的浅拷贝,这是可以的,因为String是不可变的
A:A1、A2x、A3
'Y1:Y1,Y2
'Y2:Y1,Y2
y(0)=“Y1x”
A:A1、A2x、A3
'Y1:Y1x,Y2
'Y2:Y1,Y2

这本字典应该有用。您需要为每个新字典项创建一个新数组,您不能只修改现有数组的值,而期望创建一个具有不同数据的新字典项。很难理解为什么值类型行为对您很重要。可能您忽略了Array.Copy()。