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