首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

使用List<> 的 Add 方法时,最后一个增加的会把以前的都覆盖掉解决方案

2012-06-11 
使用List 的 Add 方法时,最后一个增加的会把以前的都覆盖掉public void AddStockOrder(ProviderStockOrd

使用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是引用类型,那保存的是引用,如果是值类型,保存的是值本身!

热点排行