急,List的问题,总是覆盖前一个元素的内容

独孤侠客 2012-11-06 02:52:18
直接上代码,麻烦指教,谢谢,急!!!!!!

List<string[]> listRow = new List<string[]>();
string[] tempRow = new string[19];
foreach (DataRow dr in dt.Rows)
{
for (int j = 0; j < 18; j++)
{
tempRow[j] = dr[j + 1].ToString().Trim();
}
//这里出现问题,里面的每个元素内容始终是最新加入的元素内容
listRow.Add(tempRow);
//清空tempRow
int n = 0;
foreach (string tempStr in tempRow)
{
tempRow[n++] = null;
}
}
...全文
151 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
chengmingwei11 2012-11-06
  • 打赏
  • 举报
回复
引用 5 楼 eangland1234 的回复:
请无视楼上的 答案
0..0
eangland1234 2012-11-06
  • 打赏
  • 举报
回复
请无视楼上的 答案
eangland1234 2012-11-06
  • 打赏
  • 举报
回复
foreach (string tempStr in tempRow) { tempRow[n++] = null; 改成tempStr=""或者null } 这里错了
stonespace 2012-11-06
  • 打赏
  • 举报
回复
把string[] tempRow = new string[19];放进第一个循环内,必须每次循环new一次,否则listRow中所有元素都是同一个数组,内容自然一样,
  • 打赏
  • 举报
回复
把string[] tempRow = new string[19]; 放在foreach中试试.
lhx527099095 2012-11-06
  • 打赏
  • 举报
回复
List<string[]> listRow = new List<string[]>(); string[] tempRow = new string[19]; foreach (DataRow dr in dt.Rows) { //这里重新new下或者empRow = new string[19];放在里面 for (int j = 0; j < 18; j++) { tempRow[j] = dr[j + 1].ToString().Trim(); } //这里出现问题,里面的每个元素内容始终是最新加入的元素内容 listRow.Add(tempRow); //清空tempRow int n = 0; foreach (string tempStr in tempRow) { tempRow[n++] = null; } }

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧