日期:2014-05-18  浏览次数:20862 次

使用List<> 的 Add 方法时,最后一个增加的会把以前的都覆盖掉
public void AddStockOrder(ProviderStockOrder model, string userName, int userId, string DomainID,Guid orderGuid)
  {

  List<ProviderStockOrder> stockModeList = new List<ProviderStockOrder>();//备货单实体类集合

  if (orderCode.Count > 0)
  {
  //循环备货订单编号集合,添加备货订单实体类集合
  for (int i = 0; i < orderCode.Count; i++)
  {
  if (orderCode[i] != "")
  {
  ProviderStockOrder orderModel = new ProviderStockOrder();
  //orderModel =model;
  orderModel.Code = orderCode[i].ToString();
  orderModel.SupplierID = supplierIDList[i];
  stockModeList.Add(orderModel);
  }
  }
  }

------解决方案--------------------
确实是这样,应该是因为List.Add这个方法加入到容器里面的是对对象的引用
C# code

 List<info> list = new List<info>();
 info iif = new info();
 iif.i = -1;

 for(int i = 0 ;i < 5;i++)
 { 
    info ifo = new info();
    ifo = iif;//不注释这句list中所有的元素都会变成和最后一个一样
    ifo.i = i; 
    list.Add(ifo);

 }

foreach(info ifo in list)
{
   MessageBox.Show(ifo.i.ToString());
}

public class info
    {
        public int i;
    }

------解决方案--------------------
每次增加的都是model,model是一个对象!!!
------解决方案--------------------
http://social.msdn.microsoft.com/Forums/zh-CN/2212/thread/12dd4a87-468d-438a-a19d-2bfcc1957783/

对于List<T>来说,如果T是引用类型,那保存的是引用,如果是值类型,保存的是值本身!