vb.net - 如何将变量(trimmed)连接到另一个变量以完成其变量名称

时间:2015-06-07 11:43:04

标签: vb.net

需要的代码是这样的:

Dim myArray(0) As String
Dim ay As String = "ay"

myArr & ay(0) = "asd"

我已经尝试但没有工作

Dim classlist1(0) As String
Dim classlist2(0) As String
Dim classlist3(0) As String
Dim classlist4(0) As String
Dim count As Integer = 0

For _year As Integer = 1 To 4
   ("classlist" & _year)(count) = "hi"
   count += 1
Next

2 个答案:

答案 0 :(得分:1)

任何时候你看到这样的事情:

Dim classlist1(0) As String
Dim classlist2(0) As String
Dim classlist3(0) As String
' etc.

表明您使用了错误的数据结构。而不是试图动态构建变量名(这在静态语言中是不可能的,至少在没有一些非常丑陋的反射代码且运行时错误的可能性很大的情况下),只需使用集合

例如,如果您想要一组字符串:

Dim classList As New List(Of String)()

如果你想要一组字符串集合:

Dim classLists As New List(Of List(Of String))()

然后,您可以引用父列表中的嵌套列表。所以要添加你的第一个"年"课程:

classLists.Add(new List(Of String))

并在那一年添加一个课程:

classLists(0).Add("some value")

正如您所看到的,跟踪数据结构开始变得有点困难。这是创建自定义类型和结构变得非常有用的地方。例如,而不是代表"年"作为字符串列表,创建一个实际的Year类。该类可以在内部保存字符串列表和其他逻辑/数据。

答案 1 :(得分:0)

尝试Dictionary<TKey, TValue> Class From MSDN

Dim classLists As New Dictionary(Of String, String)()
'Add items with keys
For _year As Integer = 1 To 4
   classLists.Add(String.Format("classlist{0}",_year), "hi")
Next

您可以稍后按键获取价值

Dim key As String = "classlist2"
Dim value As String = classLists(key)