После прочтения файла конфигурации во время установки я сохраняю веб-службы url
в Hashtable
для проверки возможности подключения к этим службам.
Прежде чем просмотреть все сохраненные значения, я хочу проверить только первое значение.Ключи, которыми я пользуюсь - это целый узел xml
, содержащий сервис url
, поэтому он мне неизвестен.
Сначала я не очень много знал о Hashtable
, поэтому я попытался получить к нему доступ с помощью индекса,Предполагая, что ht
является заполненным Hashtable
, я попытался это сделать:
Dim serviceUrl as String = ht(0).Value
Что, очевидно, не удалось, поскольку нет key
, равного 0
, а serviceUrl
это просто Nothing
.
Затем я попытался получить доступ к первому элементу, используя:
Dim firstEntry as DictionaryEntry = ht(ht.Keys(0).ToString())
' Also tried this:
' Dim firstEntry as DictionaryEntry = ht(ht.Keys(0))
В обоих случаях я получил ошибку:
System.InvalidCastException: указанное приведение недопустимо.
В итоге я использовал For Each
и вышел из цикла сразу после первой итерации.
For Each entry As DictionaryEntry In ht
Dim serviceUrl as String = entry.Value
'Use it and exit for.
Exit For
Next
Что ж, это выглядит действительно ужасно.
После некоторого времени отладки и осмотра я использовал массив для хранения значений ключей:
Dim arr as Object() = new Object(100){}
'Copy the keys to that array.
ht.Keys.CopyTo(arr,0)
'Now I can directly access first item from the Hashtable:
Dim serviceUrl as String = ht(arr(0))
Я не уверен, что это правильный подход.
Есть ли прямой / чистый способ получить доступ к первому предмету из Hashtable
?