关于foreach的一个BUG
2015-08-04 22:05
337 查看
foreach用起来比for更方便,但是foreach隐藏的操作,可能带来更多未知的BUG,今天就遇到一个问题.编程环境VS2010
所以不管这个是不是foreach的BUG,都是使用foreach造成的问题,所以以后使用foreach要尽量避免一些非常规的操作.
//使用foreach遍历,其中未改变item的值,但是使用了匿名委托 item的值始终为rels.za.Asm的最后一位.百思不得其解,后改为for
foreach (var item in rels.za.Asm.Count) { var item = rels.za.Asm[i]; item.pone.Extend.Addonly("string-性格", RandCells(), data => { List<string> sary = (List<string>)data.value; string sc = "{0}是一个{1}的人。"; string sd = MES.Format(sc, item.pone.Name.ToString(), RandCellsms(sary)); return sd; }); item.pone.Extend.Addonly("Appearance-长相", new WorldOne.People.Appearance(1), data => { WorldOne.People.Appearance aone = (WorldOne.People.Appearance)data.value; return aone.ms(item.pone); }); item.pone.Extend.Addonly("string-爱好", likes(item.pone), data => { List<string> sary = (List<string>)data.value; string scc = "{0}的爱好是{1}。"; string sdd = MES.Format(scc, item.pone.Name.ToString(), RandCellsms(sary)); return sdd; }); }
for (int i = 0; i < rels.za.Asm.Count ; i++) //使用for之后,数据读取正常 { var item = rels.za.Asm[i]; item.pone.Extend.Addonly("string-性格", RandCells(), data => { List<string> sary = (List<string>)data.value; string sc = "{0}是一个{1}的人。"; string sd = MES.Format(sc, item.pone.Name.ToString(), RandCellsms(sary)); return sd; }); ..........
所以不管这个是不是foreach的BUG,都是使用foreach造成的问题,所以以后使用foreach要尽量避免一些非常规的操作.
相关文章推荐
- leetcode面试准备:Count Complete Tree Nodes
- Struts拦截器拦截未登录的操作
- sudo 问题
- 黑马程序员--文件字符输入输出函数的应用
- day04_循环结构_20150804
- 获取鼠标XY坐标
- 例子
- FileInputStream与FileOutputStream练习题 -------------------图片拷贝
- Lua在iOS上的编译
- 选数
- uva10392不要被题目骗了,LL质因数分解
- 如何用python实现剔除列表中相同的元素
- win7+opencv2.4.9+visualstudio2013
- hdu 5347 MZL's chemistry
- git命令总结
- WPF剖析最简单的XAML代码
- star
- 详说CMDeviceMotion
- How to fix the sources list
- 7、C语言和设计模式(工厂模式)