0

我有几个变量称为:_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

它什么也没做。也没有错误或异常,只是值保持不变

4

1 回答 1

1

当您使用

varDict.Add("4sVal", _4sVal)

您不是将_4sVal变量放入字典中,而是将其值。

然后,更改字典不会更改_4sVal,因为字典中没有它的引用。

我的意思是

varDict("4sVal") = 5

将更改字典的值,但不会更改变量_4sVal本身。

我认为正确的做法是将变量定义为属性,定义如下:

Property _4sVal As Integer
    Get
        Return varDict("4sVal")
    End Get
    Set(value As Integer)
        varDict("4sVal") = value
    End Set
End Property

这样您就不必更改其余代码中的任何内容。它将是透明的。

于 2015-05-04T21:51:41.000 回答