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

arrayList添加数组时一直重复
碰到一个问题,循环一个表,我需要提取每行数据的2个字段存在一个数组里,而这个数组是不断添加到 arrayList里面
下面是代码
  if (dt.Rows.Count > 0)
  {
  strEMP_SS[0] = dt.Rows[0][0].ToString();
  strEMP_SS[1] = dt.Rows[0][1].ToString();
  listEMP_SS.Add(strEMP_SS);
  //listEMP_SS.Insert(k, strEMP_SS);
  listEMP_SS.
  k++;
  }
但是出现问题了,能添加到arrayList里面,但是里面存放的数组都是最后一次进入的,之前的数据都变成最后一次存放的,
我试过 listEMP_SS.Add(strEMP_SS)和 listEMP_SS.Insert(k, strEMP_SS),都没办法
各位有什么好办法,在线急求

------解决方案--------------------
可以这样理解。为什么为导致存放的都变成了最后一次进入的呢?那说明你在对同一个对象进行操作。
strEMP_SS这个是你每次都加入的值。
strEMP_SS有下标,说明是一个数组之类的东西,为一个引用类型。引用类型直接进行了地址操作,你每次添加一个strEMP_SS,但是其地址仍然没变,也就是说每次Add的时候其实是同一个东西。
而你在add之前赋值,会改变所有Add的东西。

如此说来,你需要每次实例化一个strEMP_SS对象,可以在循环内部实例化然后赋值,再进行Add操作,这样就没问题了。
------解决方案--------------------
因为存的对象是一个 改的只是属性所以会自动把之前的对象也改了
------解决方案--------------------
原因在于你每次都把两个字段的值都存在strEMP_SS[0],strEMP_SS[1]中,下一次的替换上一次的,所以永远都是最后一次的值.