1

我有一个看起来像这样的嵌套哈希表。

  Hashtable table = new Hashtable();
  Hashtable subtable = new Hashtable();
  Hashtable options = new Hashtable();

  options.Add("file","foo");
  subtable.Add("post_option",options);
  table.Add(0,subtable);

  //foreach here

这就是我必须解决的问题,我无法让任何父亲参与其中来改变现状。所以我需要做的是通过调用从“table”哈希表开始的键“file”来获取“foo”。我已经尝试了 foreach 和 .Keys 和 .Values 的所有组合。我只是似乎无法得到它大声笑。谢谢

4

2 回答 2

1

Enumerator of Hashtableworks 与 enumerator of 类似IDictionary<TKey,TValue>,但它不是通用的,因为它是古老的 API 来自不存在泛型的 .NET 1。所以如果你想迭代Hashtableforeach你需要指定项目的类型。如果HashtableDictionaryEntry.

foreach(DictionaryEntry tableEntry in table)
{
    // your logic
}

如果你不知道前两个表的键,那么你需要做这样的事情。

foreach(DictionaryEntry tableEntry in table)
{
    Hashtable subtable = tableEntry.Value as Hashtable;
    if (subtable == null)
        continue;
    foreach(DictionaryEntry subtableEntry in subtable)
    {
        Hashtable options = subtableEntry.Value as Hashtable;
        if (options == null)
            continue;

        object file = options["file"];
    }
}
于 2013-04-02T05:06:51.780 回答
0

你只需要这样做:

object foo = table[0]["post_option"]["file"];
于 2013-04-02T04:52:19.643 回答