如何进行从Hashtable
到Dictionary
的转换,使值保持通用?我的想法是拥有如下功能:
Public Function Hashtable2Dictionary(Of T)(ht As Hashtable) As Dictionary(Of String, T)
' do conversion here
End Function
答案 0 :(得分: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
您无法直接将Hashtable
投射到Dictionary
。您可以尝试将HashTable
中的每个对象投放到T
(CType
使用一些技巧来获得所需的类型,例如String
到Int32
)。如果无法将其转换为目标类型,则会引发InvalidCastException
。
你为什么需要它?也许有更好的方法来实现你想要的。通常,您应该避免使用非常规集合,例如ArrayList
或HashTable
。