我有一个嵌套的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
这就是我必须要合作的东西,我不能让任何父亲在链条上改变它的本来面目。所以我需要做的是通过从“table”哈希表开始调用键“文件”来获取“foo”。我尝试了foreach和.Keys和.Values的每个组合。我似乎无法得到它大声笑。谢谢
答案 0 :(得分:1)
Hashtable
的枚举器类似于IDictionary<TKey,TValue>
的枚举器,但它不是通用的,因为它是来自.NET 1的古代API,其中不存在泛型。因此,如果您想使用Hashtable
迭代foreach
,则需要指定项目的类型。如果Hashtable
为DictionaryEntry
。
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"];
}
}
答案 1 :(得分:0)
你只需要这样做:
object foo = table[0]["post_option"]["file"];