1

如何进行从保持值通用的Hashtable转换Dictionary?我的想法是具有如下功能:

Public Function Hashtable2Dictionary(Of T)(ht As Hashtable) As Dictionary(Of String, T)
    ' do conversion here
End Function
4

1 回答 1

1

也许:

Public Function Hashtable2Dictionary(Of T)(ht As Hashtable) As Dictionary(Of String, T)
    If ht Is Nothing Then Return Nothing
    Dim dict = New Dictionary(Of String, T)(ht.Count)
    For Each kv As DictionaryEntry In ht
        dict.Add(kv.Key.ToString(), CType(ht(kv.Value), T))
    Next
    Return dict
End Function

您不能将HashtableaDictionary直接转换为 a。您可以尝试将 to 中的每个对象强制HashTable转换TCType使用一些技巧来获得所需的类型,例如Stringto Int32)。如果它不能转换为目标类型,InvalidCastException则会引发。

你为什么需要它?也许有更好的方法来实现你想要的。一般来说,你应该避免像现在这样的非通用ArrayList集合HashTable

于 2013-07-19T07:00:48.553 回答