VB.net 键控数组
VB.net Keyed Array
我想构建一个数组,其行以字符串为键。行不必具有相同数量的列(锯齿状数组)或在每列中具有值。我希望能够更新数组现有行中的列。
我试过使用字典。
Dim ToolUsers as New Dictionary(Of String, Array)
Dim UserData() As String = {"", "", "", "", "", "", "", "")
Of String
允许我访问基于 String
值的任何特定行,但 Array
是一个引用类型,并且始终指向存储在 [=15= 中的当前值] 数组而不是值类型并将数组值存储在 Dictionary
.
我查看了 Array
的 Array
,但它似乎不允许通过键访问现有行或允许更新现有值。
VB.net中是否存在这样的结构?
您可以使用 Dictionary
实现您想要的效果,但 .NET 中的数组 are reference types,因此您需要小心填充字典的方式,如果您不重复使用相同的数组真的想要每个项目中的不同数据。例如
' Create a dictionary from string to array of string
Dim x = New Dictionary(Of String, String())()
x("A") = New String() { "A1", "A2", "A3" }
' A : A1, A2, A3
x("A")(1) = "A2x"
' A : A1, A2x, A3
Dim y = New String() { "Y1", "Y2" }
x("Y1") = y ' points to same array as y
x("Y2") = DirectCast(y.Clone(), String()) ' shallow copy of y, which is OK since String is immutable
' A : A1, A2x, A3
' Y1 : Y1, Y2
' Y2 : Y1, Y2
y(0) = "Y1x"
' A : A1, A2x, A3
' Y1 : Y1x, Y2
' Y2 : Y1, Y2
我想构建一个数组,其行以字符串为键。行不必具有相同数量的列(锯齿状数组)或在每列中具有值。我希望能够更新数组现有行中的列。
我试过使用字典。
Dim ToolUsers as New Dictionary(Of String, Array)
Dim UserData() As String = {"", "", "", "", "", "", "", "")
Of String
允许我访问基于 String
值的任何特定行,但 Array
是一个引用类型,并且始终指向存储在 [=15= 中的当前值] 数组而不是值类型并将数组值存储在 Dictionary
.
我查看了 Array
的 Array
,但它似乎不允许通过键访问现有行或允许更新现有值。
VB.net中是否存在这样的结构?
您可以使用 Dictionary
实现您想要的效果,但 .NET 中的数组 are reference types,因此您需要小心填充字典的方式,如果您不重复使用相同的数组真的想要每个项目中的不同数据。例如
' Create a dictionary from string to array of string
Dim x = New Dictionary(Of String, String())()
x("A") = New String() { "A1", "A2", "A3" }
' A : A1, A2, A3
x("A")(1) = "A2x"
' A : A1, A2x, A3
Dim y = New String() { "Y1", "Y2" }
x("Y1") = y ' points to same array as y
x("Y2") = DirectCast(y.Clone(), String()) ' shallow copy of y, which is OK since String is immutable
' A : A1, A2x, A3
' Y1 : Y1, Y2
' Y2 : Y1, Y2
y(0) = "Y1x"
' A : A1, A2x, A3
' Y1 : Y1x, Y2
' Y2 : Y1, Y2