1

以下のようなデータ構造を作りたいと思っています。 ここに画像の説明を入力

これについては、keyvaluepair 構造を使用します。しかし、私はそれを作成することができません。

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

1 つには、辞書を追加する前に、各辞書を初期化する必要があります。

exportDict = new Dictionary<string, Dictionary<string, bool>>();
Dictionary<string,bool> interiorDict = new Dictionary<string,bool>();
interiorDict.Add("subvar", true);
exportDict.Add("mainvar", interiorDict);

しかし、内部ディクショナリにキーと値のペアが 1 つしかないことがわかっている場合は、次のようにすることができます。

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.0Dictionary<>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 に答える