所以我最近一直在研究C#,所有的泛型集合都让我有点困惑。假设我想表示一个数据结构,其中树的头部是一个键值对,然后在它下面有一个可选的键值对列表(但不超过这些级别)。这样做合适吗?
public class TokenTree
{
public TokenTree()
{
/* I must admit to not fully understanding this,
* I got it from msdn. As far as I can tell, IDictionary is an
* interface, and Dictionary is the default implementation of
* that interface, right?
*/
SubPairs = new Dictionary<string, string>();
}
public string Key;
public string Value;
public IDictionary<string, string> SubPairs;
}它只是一个传递数据的简单分流。
发布于 2008-08-12 13:20:55
有一个名为KeyValuePair的实际数据类型,使用如下所示
KeyValuePair<string, string> myKeyValuePair = new KeyValuePair<string,string>("defaultkey", "defaultvalue");发布于 2008-08-12 13:25:13
您可以做的一件事是直接使用Dictionary对象,然后使用您自己的修改来扩展它:
public class TokenTree : Dictionary<string, string>
{
public IDictionary<string, string> SubPairs;
}这为您提供了无需对密钥执行IDictionary规则(例如,密钥唯一性等)的优势。
是的,你正确理解了构造器的概念:)
发布于 2008-08-12 13:45:53
我认为你可能想要的(作为你的问题的字面实现)是:
public class TokenTree
{
public TokenTree()
{
tree = new Dictionary<string, IDictionary<string,string>>();
}
IDictionary<string, IDictionary<string, string>> tree;
}您实际上在问题中提到了键值的“列表”,因此您可能希望将内部IDictionary替换为:
IList<KeyValuePair<string, string>>https://stackoverflow.com/questions/8800
复制相似问题