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

Hashtableaを aDictionaryに直接キャストすることはできません。to 内のすべてのオブジェクトをキャストすることを試みることができます( HashTabletoなど、目的の型を取得するためにいくつかのトリックを使用します) 。ターゲットの型にキャストできない場合は、 anが発生します。TCTypeStringInt32InvalidCastException

なぜあなたはそれが必要なのですか?たぶん、あなたが望むものを達成するためのより良い方法があります。ArrayList一般に、やHashTable最近のような非ジェネリック コレクションは避けるべきです。

于 2013-07-19T07:00:48.553 に答える