我想创建如下的数据结构。
对于这个,我想去keyvaluepair结构。但我无法创造它。
public class NewStructure
{
public Dictionary<string, Dictionary<string, bool>> exportDict;
}
这是一种正确的方式吗?如果是这样,我如何插入值。如果我插入
NewStructure ns = new NewStructure();
ns.exportDict.Add("mainvar",Dictionary<"subvar",true>);
它给出了编译错误。 我什么都没想到。请给我任何建议。
答案 0 :(得分:2)
你可以通过
摆脱错误Dictionary<string, bool> values = new Dictionary<string, bool> ();
values.Add("subvar", true);
ns.exportDict.Add("mainvar", values);
但是你最好尝试这样的事情:
class MyLeaf
{
public string LeafName {get; set;}
public bool LeafValue {get; set;}
}
class MyTree
{
public string TreeName {get; set;}
public List<MyLeaf> Leafs = new List<MyLeaf>();
}
然后
MyTree myTree = new MyTree();
myTree.TreeName = "mainvar";
myTree.Leafs.Add(new MyLeaf() {LeafName = "subvar", LeafValue = true});
答案 1 :(得分:1)
首先,您需要在添加每个词典之前对其进行初始化:
exportDict = new Dictionary<string, Dictionary<string, bool>>();
Dictionary<string,bool> interiorDict = new Dictionary<string,bool>();
interiorDict.Add("subvar", true);
exportDict.Add("mainvar", interiorDict);
但是如果你知道你的内部词典只有一个键值对,那么你可以这样做:
exportDict = new Dictionary<string, KeyValuePair<string,bool>>();
exportDict.Add("mainvar", new KeyValuePair<string,bool>("subvar", true));
答案 2 :(得分:1)
如果您在C# 4.0
,则可以使用Dictionary<>
KeyValuePair<>
您的NewStructure
将成为
public class NewStructure
{
public Dictionary<string, KeyValuePair<string, bool>> exportDict =
new Dictionary<string, KeyValuePair<string, bool>>(); //this is still a dictionary!
}
你可以这样使用它:
NewStructure ns = new NewStructure();
ns.exportDict.Add("mainvar",new KeyValuePair<string,bool>("subvar",true));
使用字典词典,您可以将每个“叶子”列为一个列表。