读书人

使用Listlt;gt; 的 Add 方法时最后一个增

发布时间: 2012-06-11 17:42:22 作者: rapoo

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

读书人网 >C#

热点推荐