10

我需要调试一些使用 Hashtable 来存储来自各种线程的响应的旧代码。

我需要一种方法来遍历整个 Hashtable 并打印出 Hastable 中的键和数据。

如何才能做到这一点?

4

5 回答 5

22
foreach(string key in hashTable.Keys)
{
   Console.WriteLine(String.Format("{0}: {1}", key, hashTable[key]));
}
于 2008-08-29T18:03:37.120 回答
9

我喜欢:

foreach(DictionaryEntry entry in hashtable)
{
    Console.WriteLine(entry.Key + ":" + entry.Value);
}
于 2008-08-29T18:55:10.087 回答
3

   public static void PrintKeysAndValues( Hashtable myList )  {
      IDictionaryEnumerator myEnumerator = myList.GetEnumerator();
      Console.WriteLine( "\t-KEY-\t-VALUE-" );
      while ( myEnumerator.MoveNext() )
         Console.WriteLine("\t{0}:\t{1}", myEnumerator.Key, myEnumerator.Value);
      Console.WriteLine();
   }

来自: http: //msdn.microsoft.com/en-us/library/system.collections.hashtable (VS.71).aspx

于 2008-08-29T18:04:37.073 回答
1

这应该适用于几乎每个版本的框架......

foreach (string HashKey in TargetHash.Keys)
{
   Console.WriteLine("Key: " + HashKey + " Value: " + TargetHash[HashKey]);
}

诀窍是您可以获得给定哈希的键(或值)的列表/集合以进行迭代。

编辑:哇,你试着把你的代码漂亮一点,接下来你知道有 5 个答案...... 8 ^ D

于 2008-08-29T18:06:40.063 回答
1

我还发现这也可以。

System.Collections.IDictionaryEnumerator enumerator = hashTable.GetEnumerator();

while (enumerator.MoveNext())
{
    string key = enumerator.Key.ToString();
    string value = enumerator.Value.ToString();

    Console.WriteLine(("Key = '{0}'; Value = '{0}'", key, value);
}

谢谢您的帮助。

于 2008-08-29T18:10:55.420 回答