将“number”转换为“variable name”

convert "number" to "variable name"

提问人:user3799201 提问时间:5/26/2023 更新时间:5/27/2023 访问量:47

问:

如何将数字“转换”为变量名称?

好的,所以我通过网络从外部来源接收一个数字和一个值。有 aprox 600 号码。 所以现在我需要把这个值放到我的程序中的变量中。 我可以使用一个长选择案例来查找数字,然后将发送的值存储在相应的变量中。 或者,还有其他方法吗?就像将所有变量名称存储在数组中与数字对应的位置,然后从数组中获取变量名称并将接收到的值设置为该变量?

Sub WriteToMyVars(varNumber, val)
    Select varNumber
        Case "100"
            MyVarName1 = val
        Case "101"
            MyVarName2 = val
        Case "102"
            MyVarName3 = val
        'etc etc
    End Select
End Sub

'or -----------------------------------

Dim a(600) As String
a(100) = "MyVarName1"
a(101) = "MyVarName2"
a(102) = "MyVarName2"
'etc etc

Sub WriteToMyVars(varNumber, val)
    a(varNumber) = val 'this won't work I know, it'll put the val in the array instead of the varname, but something like this would be way shorter than the above
End Sub
数组 vb.net

评论

3赞 Filburt 5/26/2023
也许在寻找字典

答:

0赞 Michael Foster 5/26/2023 #1

也许你想要一个?Hashtable

Dim a As New Hashtable
a(varNumber) = val

或者,正如 Filburt 所提到的,如果您知道数据类型,则可以使用 a。速度更快,并取代了 .如果是一个整数并且是一个字符串,那么它将是:DictionaryDictionaryHashtablevarNumberval

Dim a As New Dictionary(Of Integer, String)
a.Add(varNumber, val)

此线程讨论了差异: .NET HashTable 与字典 - 字典可以一样快吗?

评论

0赞 Craig 5/31/2023
我建议不要对遗留代码以外的任何内容使用 a,因为它存储所有内容,因此它需要强制转换才能转换回原始类型。HashtableObject
0赞 Michael Foster 5/31/2023
@Craig,一个有效的观点。你能告诉我在这种情况下应该使用什么数据类型吗?valDictionary