我有一些变量叫做:_2sVal,_3sVal,_4sVal等 我想通过循环改变它们的每个值。 像:
For i = 1 To 10
'set the value
Next
我已经尝试将它们放在如下字典中:
Dim varDict As New Dictionary(Of String, Integer)
varDict.Add("2sVal", _2sVal)
varDict.Add("3sVal", _3sVal)
varDict.Add("4sVal", _4sVal)
我可以使用
检索值MsgBox(varDict(i.ToString & "sVal"))
但是当我尝试改变它时
varDict(i.ToString & "sVal") = 5
它没有做任何事情。没有错误或例外,只是值保持不变
答案 0 :(得分:1)
使用时
varDict.Add("4sVal", _4sVal)
您没有将_4sVal
变量放在字典中,而是放在它的值中。
然后,更改字典不会更改_4sVal
,因为字典中没有引用它。
我的意思是
varDict("4sVal") = 5
将更改字典的值,但不会更改变量_4sVal
本身。
我认为正确的做法是将变量定义为Properties,定义如下:
Property _4sVal As Integer
Get
Return varDict("4sVal")
End Get
Set(value As Integer)
varDict("4sVal") = value
End Set
End Property
这样您就不必更改其余代码中的任何内容。它将是透明的。