真是奇闻,foreach的循环也能越界。。。。擦

NqIceCoffee 2014-08-14 09:42:20


RT所示
第一次见这种事情,真是不知道发生了啥情况。
有谁能解惑???
200分送上。。。。
...全文
1330 36 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
zdczdccccc 2014-08-15
  • 打赏
  • 举报
回复
碰到这种问题,半天解决不出来我就单步慢慢来
NqIceCoffee 2014-08-15
  • 打赏
  • 举报
回复
感谢各位的忍心参与,人人有分,结贴了~~~
宝_爸 2014-08-14
  • 打赏
  • 举报
回复
引用 24 楼 NqIceCoffee 的回复:
擦,问题找到了 在页面的下面又使用了这个searchitems,索引越界了。。。。。。。。。 但为啥报的错误在这个循环这???这么吭,我擦。。。。。。。。。。。
原来如此。
sy401042879 2014-08-14
  • 打赏
  • 举报
回复
应该是数据被改了。在仔细看看,其他地方是否还在使用那个集合。
NqIceCoffee 2014-08-14
  • 打赏
  • 举报
回复
擦,问题找到了 在页面的下面又使用了这个searchitems,索引越界了。。。。。。。。。 但为啥报的错误在这个循环这???这么吭,我擦。。。。。。。。。。。
Tiger_Zhao 2014-08-14
  • 打赏
  • 举报
回复
引用 18 楼 lyj224170707 的回复:
[quote=引用 15 楼 Z65443344 的回复:] 是否有其他线程会修改这个数组? 不管用for还是foreach,循环次数是在一开始就指定好的 当你循环到一半,有别的地方修改了这个数组,当然就造成越界了
不会,如果是这样的话,它会报迭代器遭到破坏的错误。。因为我试过。。哈哈[/quote] 这是靠比较迭代前和当前的 version 是否一致判断的,如果他的类中修改内容时没有更新 version,就不会报错了。
PandLee 2014-08-14
  • 打赏
  • 举报
回复
建议你断点调试 一直监听数组的长度
threenewbee 2014-08-14
  • 打赏
  • 举报
回复
foreach (var item in config.searchitems.Cast<元素的类型>().ToList()) 将集合复制一份固定下来看看
insus 2014-08-14
  • 打赏
  • 举报
回复
肯定被修改了。 怀疑你跑for没有完成,直接注释掉 for语式块,改写为foreach,还继续跑刚才的debug。 建议你在debug时,如果中途断,应该退出debug模式和取消所有中断点。甚至关闭页面,修完之后,再重新开始。
NqIceCoffee 2014-08-14
  • 打赏
  • 举报
回复
SearchItems 是个List,且只初始化一次(初始化时双lock),完毕后进缓存 然后就仅仅是读取,不涉及修改
游离失所 2014-08-14
  • 打赏
  • 举报
回复
引用 15 楼 Z65443344 的回复:
是否有其他线程会修改这个数组? 不管用for还是foreach,循环次数是在一开始就指定好的 当你循环到一半,有别的地方修改了这个数组,当然就造成越界了
不会,如果是这样的话,它会报迭代器遭到破坏的错误。。因为我试过。。哈哈
淡淡的活着 2014-08-14
  • 打赏
  • 举报
回复 1
我越界是修改过值··不过貌似你应该补是这种问题·那就是下表的问题了吧··
坐口之蛙 2014-08-14
  • 打赏
  • 举报
回复
把SearchItem属性的get发出来瞧瞧
於黾 2014-08-14
  • 打赏
  • 举报
回复
是否有其他线程会修改这个数组? 不管用for还是foreach,循环次数是在一开始就指定好的 当你循环到一半,有别的地方修改了这个数组,当然就造成越界了
shawn_yang 2014-08-14
  • 打赏
  • 举报
回复
建议用 count 貌似以前在哪看到, foreach 有时因为控件生成问题导致出错。
  • 打赏
  • 举报
回复
模型结构不匹配 ?
游离失所 2014-08-14
  • 打赏
  • 举报
回复
我估计config.SearchItems这个可能是自定义的一个类,并且实现了IEnumerable接口。。 去看看里头的GetEnumerator方法。。估计问题就在这里。。 我觉得只有这种情况才会发生foreach出现下表越界
qqm05 2014-08-14
  • 打赏
  • 举报
回复
看了错误提示,应该是在获取config.SearchItems的时候报的错误, 是在获取SearchItems属性的时候报的索引错误吧,你看看这个个属性读取的时候的代码
NqIceCoffee 2014-08-14
  • 打赏
  • 举报
回复
引用 8 楼 no200830740203 的回复:
试着输出SearchItems看一下
哥们,现在就是在输出它的内容啊
NqIceCoffee 2014-08-14
  • 打赏
  • 举报
回复
引用 7 楼 qqm05 的回复:
用for循环是不是也报错了呢?
是的,注释掉的内容就是用for 后来改成foreach,也一样
加载更多回复(16)

62,242

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧