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 に答える