0

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

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

...

我使用两个 for each 循环从 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 文件将保存填充复选框、文本框等的值...

4

1 回答 1

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 keyExists = iniSettings[section].ContainsKey(key);

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

var value = iniSettings[section][key];
于 2013-07-23T08:42:07.620 回答