2012-08-03 4 views
1

Я хочу создать структуру данных, как показано ниже. enter image description hereКак создать такую ​​структуру дерева

Для этого я хочу перейти на структуру keyvaluepair. Но я не могу его создать.

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

Правильно. Если да, то как я могу вставить в него значения. Если я ввожу, например,

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

с помощью компиляции. Мне ничего не приходит в голову. Любые предложения, пожалуйста.

ответ

2

Вы можете избавиться от ошибок при

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

Но, наверное, лучше попробовать `d что-то вроде этого:

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>(); 
} 

А потом

+0

Он также должен инициализировать словарь 'exportDict' – NominSim

+0

@Jleru .. Я хочу создать более двух таких типов объектов и хочу их восстановить. Ваш пример подходит для этого? – Searcher

+0

Конечно! Вы можете создать список MyTrees и заполнить их, как вы хотите – JleruOHeP

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)); 
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)); 

Со словарем словарей вы должны сделать каждый «лист» своим списком.

+0

, должен ли мы сделать этот объект DictionaryDictDict для типа KeyValuePair? – Searcher

+0

нет, exportDict все равно будет Словарем. Я добавил его инициализацию для полноты. – Alex

Смежные вопросы