List<Model.ElectricityMeterInfo> operateModels = new List<DaHuaElectricMeter.Model.ElectricityMeterInfo>();
        List<Model.ElectricityMeterInfo> operateTmpModels = new List<DaHuaElectricMeter.Model.ElectricityMeterInfo>(); foreach (Model.ElectricityMeterInfo emi in Command.SystemData.emiModels)
                    {
                        operateModels.Add(emi);
                        operateTmpModels.Add(emi);
                    }
 foreach (Model.ElectricityMeterInfo e in operateModels) 
{
  operateTmpModels.Remove(e);
}报错了,两个List的count全部都改变,我就想不明白是为什么

解决方案 »

  1.   

     List<Model.ElectricityMeterInfo> operateModels = new List<DaHuaElectricMeter.Model.ElectricityMeterInfo>();
            List<Model.ElectricityMeterInfo> operateTmpModels = new List<DaHuaElectricMeter.Model.ElectricityMeterInfo>(); foreach (Model.ElectricityMeterInfo emi in Command.SystemData.emiModels)
                        {
                            operateModels.Add(emi);
                            operateTmpModels.Add(emi);
                        }
     foreach (Model.ElectricityMeterInfo e in operateModels
    {
      operateTmpModels.Remove(e);
    }
      

  2.   

    删除的话,要从后往前删for(int i=list.count-1;i>=0;i--)
    {
    ......
    }
      

  3.   

    指针的问题吧,2个list 实际上都是对同一对象的引用.......operateTmpModels.Remove(e); 其实是直接从内存中删除...学习过C++的 应该比较好理解
      

  4.   

    foreach循环要求集合必须是只读的,不能对原集合进行修改
      

  5.   

    看下这篇文章,你就明白了。
    http://www.cnblogs.com/samsonhuang/articles/2619831.html
      

  6.   


    看清楚点嘛
    是两个List
      

  7.   

     foreach (Model.ElectricityMeterInfo e in operateModels) 
    {
      operateTmpModels.Remove(e);
    }
    报错的话 是 foreach 本身的问题
      

  8.   

                
                List<int> list1 = new List<int>();
                List<int> list2 = new List<int>();            for (int i = 0; i < 10; i++)
                {
                    list1.Add(i);
                    list2.Add(i);
                }            foreach (var item in list1)
                {
                    list2.Remove(item);
                }
                List<object> list3 = new List<object>();
                List<object> list4 = new List<object>();            for (int i = 0; i < 10; i++)
                {
                    object temp = new object();
                    list3.Add(temp);
                    list4.Add(temp);
                }            foreach (var item in list3)
                {
                    list4.Remove(item);
                }不会有问题的,你的代码肯定是不全或者不对