我想创建一个以下类型的字典,
var data = new Dictionary<string, Dictionary<string, Dictionary<string, int>>>();
Run Code Online (Sandbox Code Playgroud)
当我尝试以下列方式向字典添加值时,我得到一个KeyNotFound异常.
data[key1][key2][key3]= 3;
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?我假设如果在字典中找不到密钥,它会自动添加到字典中.
否则有没有办法在运行时添加键?
我期待以下类型的输出:
[male,[animal,[legs,4]
[eyes,2]]
[human,[hands,2]
[ears,2]]
[female,[animal,[nose,1]
[eyes,2]]
[bird,[wings,2]
[legs,2]]
Run Code Online (Sandbox Code Playgroud)
这里的问题是你只是试图分配到最里面的字典.但两个外层并不存在.
您需要明确每个级别:
if (!data.ContainsKey(key1))
data[key1] = new Dictionary<string, Dictionary<string, int>();
Run Code Online (Sandbox Code Playgroud)
... 等等.编写它可能有点麻烦,所以如果你需要它很多,我建议你在字典上创建一个扩展方法,让你轻松地做到这一点.
如果分配给字典中的键,则会创建该条目.但是,如果您从字典中的某个键读取,并且该键不存在,则会出现异常.
| 归档时间: |
|
| 查看次数: |
2587 次 |
| 最近记录: |