1

我想创建如下所示的数据结构。 在此处输入图像描述

对于这个我想去键值对结构。但我无法创建它。

public class NewStructure
{
    public Dictionary<string, Dictionary<string, bool>> exportDict;
}

是不是一个正确的方法。如果是这样,我如何向其中插入值。如果我插入喜欢

NewStructure ns = new NewStructure();
ns.exportDict.Add("mainvar",Dictionary<"subvar",true>);

它给出了编译错误。我什么都没有想到。请有任何建议。

4

3 回答 3

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});
于 2012-08-03T13:20:49.740 回答
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));
于 2012-08-03T13:22:02.300 回答
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));

使用字典词典,您可以使每个“叶子”本身成为一个列表。

于 2012-08-03T13:22:08.420 回答