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