【问题标题】:Use Dictionary by variable name按变量名使用字典
【发布时间】:2019-12-12 17:17:32
【问题描述】:

我有几个像这样分配的字典类型

Public aryAAA As New Dictionary(Of Integer, Dictionary(Of String, String))
Public aryBBB As New Dictionary(Of Integer, Dictionary(Of String, String))
Public aryCCC As New Dictionary(Of String, String)
Public aryDDD As New Dictionary(Of String, String)

在数据库中,我存储了 aryAAAaryBBBaryCCCaryDDD 的名称。在我的程序中,如果我读取了一条数据库记录并返回了aryCCC,那么我希望能够使用该字典。

我在想我必须通过遍历system.collecton.generic.dictionary 将一个对象分配给aryCCC,然后使用该对象来检索存储的数据。不确定我将如何执行此操作,或者是否有更好的方法通过返回的变量名称来使用字典?

感谢您对此的任何帮助。

【问题讨论】:

    标签: vb.net dictionary collections


    【解决方案1】:

    为此,您需要 SelectIf/Else。如果所有字典都保存相同类型的对象,我们可以在类型系统中做得更好一些,但由于存在差异,这是我们能做的最好的:

    If dbValue = "aryCCC" Then
        'Do stuff with aryCCC
    Else If dbValue = "aryAAA" Then
         'Do stuff with aryAAA
    
       'etc
    End If
    

    即使反射在这里也无济于事,因为这些变量不是成员,我们仍然需要处理不同的类型。

    最终,您希望将数据库中的 run-time 值与 compile-time 变量名称进行匹配,但这永远不会顺利。

    【讨论】:

    • 我倾向于不得不这样做。我希望有一种方法可以遍历系统集合并指向选定的条目。如果我们定义了相同的类型,是否有更好的方法来做到这一点?如果我只有 aryCCC 和 aryDDD 和其他类似的,我们会采取不同的方法。
    • 我采用了 Select Case 方法,效果很好。如果我添加其他变量,则需要维护更多代码,但仍然可行。感谢您的帮助。
    猜你喜欢
    • 2014-10-01
    • 2011-09-02
    • 2018-10-30
    • 1970-01-01
    • 2023-03-24
    • 2016-06-07
    • 2020-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多