【发布时间】:2011-02-24 09:50:42
【问题描述】:
我正在尝试编写一个递归 C# 函数,该函数将对 IDictionary<string, T> 形式的通用字典进行操作,其中 T 是另一个 IDictionary<string, T> 或字符串。
我的第一次失败尝试看起来像这样:
public string HandleDict(IDictionary<string, string> dict){
// handle the leaf-node here
}
public string HandleDict<T>(IDictionary<string, IDictionary<string, T>> dict){
// loop through children
foreach(string key in dict.Keys){
HandleDict(dict[key]);
}
}
我也尝试了HandleDict<T>(IDictionary<string, T>) where T : IDictionary<string, T> 的变体,但这也不太奏效。我知道我想做的事情可以通过自定义类作为参数而不是字典来实现,并且我的尝试在概念上存在缺陷(泛型函数中的递归没有尽头)。我仍然想知道是否真的有一种方法可以在这里使用通用 IDictionaries 来做我想做的事情。
【问题讨论】:
-
这样的字典难道不是不可实例化的吗,因为它始终是您定义的开放类型?