2013-07-19 69 views

回答

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 

不能直接投下HashtableDictionary。您可以尝试将HashTable中的每个对象投射到TCType使用一些技巧获取所需的类型,例如StringInt32)。如果不能铸造到目标类型,则会引发InvalidCastException

为什么你需要它?也许有更好的方法来实现你想要的。一般来说,您应该避免使用非通用集合,如ArrayListHashTable

+0

谢谢!其实我需要这个为了使用遗留代码:-) – jor

相关问题