没用过三层的,我写这个上去动态赋值的时候报“关键字不在数据字典中”
Dictionary<string, Dictionary<string, Dictionary<string, int>>> Unless = new Dictionary<string, Dictionary<string, Dictionary<string, int>>>();
“关键字不在数据字典中” 是没有查询到指定的键,我猜你是层级没理清,赋值的时候,被赋值的键不存在
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]++;
}
}
这是赋值的源码,您帮忙看一下?
@柚子家的橘子哟:
这种直接通过下标取值的地方断点调试一下,很多时候不判断是否取到值就进行下一步索引查找就会报异常
@❀七芯海棠❀: 好的 谢谢你 。
缺少对象呗,可能你ipMaps里没有spifersname 或者你ipMaps[spifersname] 里没有url 你直接使用了
换了另外一种用法了,这个弄晕了 。谢谢你