我正在开发一个个人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文件将保存值以填充复选框,文本框等...
答案 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];