c# - 需要帮助手动添加到字典
问题描述
我很困惑,我试图手动将条目添加到字典中,但它在第一个逗号处抛出错误。感谢您提供任何帮助。
private Dictionary<string, Dictionary<string, string>> packData =
new Dictionary<string, Dictionary<string, string>>()
{
{
"Test", //issue here
{
"Test" , "Test"
}
};
};
解决方案
您需要明确说明内部字典:
new Dictionary<string, Dictionary<string, string>>()
{
{
"Test",
new Dictionary<string, string>
{
"Test" , "Test"
}
};
};
这里要遵循的规则是“想象一下,如果大括号中的东西被替换为对Add
”的调用。在您的原始代码中,我们会将其降低为:
temp = new Dictionary<string, Dictionary<string, string>>();
temp.Add("Test", { "Test", "Test" });
这不是法律法规。但
temp = new Dictionary<string, Dictionary<string, string>>();
temp.Add("Test", new Dictionary<string, string>(){ "Test", "Test" });
是合法的,并且反过来对应于
temp = new Dictionary<string, Dictionary<string, string>>();
temp2 = new Dictionary<string, string>();
temp2.Add("Test", "Test");
temp.Add("Test", temp2);
当我感到困惑时,我经常发现它有助于将代码“降低”到更基本的形式以了解正在发生的事情。
在某些情况下,编译器更聪明地理解嵌套大括号的预期含义,就像在原始代码中一样,但不幸的是,这不是其中之一。有关支持和不支持的更多详细信息,请参阅规范;您需要搜索“对象初始化程序”和“集合初始化程序”。
推荐阅读
- django - 在 Django Management Shell 中执行 manage.py
- python-2.7 - 为什么这个元素不可交互?蟒蛇(硒)
- javascript - 为什么我做的这个闭包的内部函数不能访问外部函数变量?
- c# - C# 处理消息类 IPM.Outlook.Recall
- mysql - Powershell:将 MariaDB 查询转换为字符串
- python - python 对象中的变量还是被视为对象的值?
- javascript - Javascript函数没有返回
- r - 插入符号和 summaryFunction mnLogLoss 出错:列与“lev”一致
- mysql - 优化比较两个 MySQL 大表中的数据
- theorem-proving - 涉及常量时如何在精益定理证明器中切换类型?