zoukankan      html  css  js  c++  java
  • 关于foreach的一个BUG

    foreach用起来比for更方便,但是foreach隐藏的操作,可能带来更多未知的BUG,今天就遇到一个问题.编程环境VS2010

    //使用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要尽量避免一些非常规的操作.

  • 相关阅读:
    Android-自定义meta-data扩展数据
    (转载)【Android】ViewGroup全面分析
    小问题记录
    Gson使用 .Net中的日期序列化成带字母T的格式,Gson发序列化问题
    Android中自定义textview可以进行自体设置
    .Net版的BeanUtils
    Ksoap2-android 添加网络超时的实现
    Html5 viewport 解释
    计算两个日期之间相差的月数
    Android中的Adapter内,有getView方法
  • 原文地址:https://www.cnblogs.com/flyant/p/4703279.html
Copyright © 2011-2022 走看看