首页 新闻 会员 周边

C# 想知道我这个嵌套有问题吗?

0
悬赏园豆:15 [已解决问题] 解决于 2018-07-17 15:30

 没用过三层的,我写这个上去动态赋值的时候报“关键字不在数据字典中”

 Dictionary<string, Dictionary<string, Dictionary<string, int>>> Unless = new Dictionary<string, Dictionary<string, Dictionary<string, int>>>();

柚子家的橘子哟的主页 柚子家的橘子哟 | 初学一级 | 园豆:4
提问于:2018-07-16 09:13
< >
分享
最佳答案
0

“关键字不在数据字典中” 是没有查询到指定的键,我猜你是层级没理清,赋值的时候,被赋值的键不存在 

收获园豆:15
顾星河 | 大侠五级 |园豆:7173 | 2018-07-16 09:36

private void checkAll(string cip, string url, string cAgent)
{
cAgent = cAgent.ToLower();//转化成小写对比
foreach (var spifersname in spiderlist)
{
if (cAgent.Contains(spifersname))
{

if (!ipMaps.ContainsKey(spifersname))
{
ipMaps.Add(spifersname, new Dictionary<string, Dictionary<string, int>>());

}
//if (!ipMaps[spifersname].ContainsKey(url))
//{
ipMaps[spifersname].Add(url, new Dictionary<string, int>());
//}
if (!ipMaps[spifersname][url].ContainsKey(cip))
{

ipMaps[spifersname][url].Add(cip, 0);
}
ipMaps[cAgent][url][cip]++;
}

}

这是赋值的源码,您帮忙看一下?

柚子家的橘子哟 | 园豆:4 (初学一级) | 2018-07-16 09:37

@柚子家的橘子哟: 

这种直接通过下标取值的地方断点调试一下,很多时候不判断是否取到值就进行下一步索引查找就会报异常

顾星河 | 园豆:7173 (大侠五级) | 2018-07-16 09:45

@❀七芯海棠❀:   好的 谢谢你  。

柚子家的橘子哟 | 园豆:4 (初学一级) | 2018-07-16 09:46
其他回答(1)
0

缺少对象呗,可能你ipMaps里没有spifersname 或者你ipMaps[spifersname] 里没有url 你直接使用了

一叶兰舟飘 | 园豆:351 (菜鸟二级) | 2018-07-16 13:49

换了另外一种用法了,这个弄晕了 。谢谢你 

 

支持(0) 反对(0) 柚子家的橘子哟 | 园豆:4 (初学一级) | 2018-07-17 15:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册