访问和设置嵌套字典值

时间:2013-07-23 08:20:33

标签: c# dictionary nested

我正在开发一个个人C#项目,我想使用嵌套字典来处理我的settings.ini文件值的存储,以便将来读/写我的settings.ini文件。我的settings.ini文件包含:

[Application]  
AutoShowSetting=Log  
SettingsIniDirectory=Application  
LogDirectory=Application  

...

我在每个循环中使用两个来读取settings.ini文件中的信息,如下所示:

public void storeIniValues()
{


    int i = 0;
    string[] sectionNames = iniFile.GetSectionNames();

    foreach (string section in sectionNames)
    {
        string[] keys = iniFile.GetKeyNames(section);
        foreach (string key in keys)
        {                  
            string keyValue = iniFile.GetString(section, key, "");
            i++;

        }         

    }
}

foreach获取值并将值放入其受尊重的字符串变量中。我希望在循环遍历foreach循环时获取值,并将值放入字典中以便稍后读取/写入/更新settings.ini文件。到目前为止,我创建了一个词典:

static Dictionary<string, Dictionary<string, string>> iniSettings =
    new Dictionary<string, Dictionary<string, string>>();

如何从嵌套字典中访问ini值,如此 iniSettings [“Application”] [“AutoShowSetting”]获取相应的值(在本例中为“Log”)?另外,在foreach循环循环时如何向嵌套字典添加值(settingsIni [section] [key] = keyValue)? 我不知道从哪里开始尝试这个,因为我从未使用嵌套字典。

修改
我忘了提到settings.ini文件将保存值以填充复选框,文本框等...

1 个答案:

答案 0 :(得分:1)

假设你想继续沿着这条路走下去,而不是使用已经内置在.NET中的配置管理器,或者如评论中已经提到的现有的ini文件包装器,你需要这样做来为你的内存结构添加值:

当你有一个部分时,你需要添加它。

iniSettings.Add(section, new Dictionary<string, string>());

如果你有一个部分(在添加它之后),一个键和一个值,你需要添加它。

iniSettings[section].Add(key, value);

这将导致类似

的结构
+ section1
   + key1, value
   + key2, value
+ section2
   + key1, value

等。您可以通过调用

来检查内存结构中是否存在某个部分
bool sectionExists = iniSettings.ContainsKey(section);

将返回一个bool。当然,钥匙也是如此:

bool keyExists = iniSettings[section].ContainsKey(key);

要访问它们,您只需使用您已经想到的内容:

var value = iniSettings[section][key];