1

このようなネストされた Hashtable があります。

  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

これは私が取り組まなければならないものであり、それを変えるために父親をチェーンに巻き込むことはできません. だから私ができる必要があるのは、「テーブル」ハッシュテーブルから始まるキー「ファイル」を呼び出すことによって「foo」を取得することです。foreach と .Keys と .Values のすべての組み合わせを試しました。さっぱりわかりません(笑)。ありがとうございました

4

2 に答える 2

1

の列挙子は の列挙子Hashtableと同様に機能しますがIDictionary<TKey,TValue>、ジェネリックが存在しない .NET 1 に由来する古い API であるため、ジェネリックではありません。したがって、繰り返し処理する場合Hashtableforeach、アイテムのタイプを指定する必要があります。の場合HashtableですDictionaryEntry

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

最初の 2 つのテーブルのキーがわからない場合は、次のようにする必要があります。

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 に答える