请教一个list 循环取值的问题
List<ForumInfo> forumList2 = new List<ForumInfo>();forumList2 = forumList;
if (forumList2.Count > 0)
{
foreach (ForumInfo foruminfo in forumList2)
{
sql = "select carno from tcar a,tteam b where a.teamid=b.teamid and teamname='" + foruminfo.ForumName + "'";
SqlCommand cmd2 = new SqlCommand(sql, conn);
SqlDataReader myReader2;
myReader2 = cmd2.ExecuteReader();
int j = i;
while (myReader2.Read())
{
j++;
forumList.Add(new ForumInfo() { ForumID = j, ParendID = foruminfo.ForumID, ForumName = (string)myReader2["carno"] });
}
myReader2.Close();
}
}
程序运行时报错,在 “foreach (ForumInfo foruminfo in forumList2)” 说forumList2 数组已变化,给forumList 赋值完,forumList2 为什么也跟着变化了呢,已经在循环上forumList2 = forumList;静态赋值了啊 --------------------编程问答-------------------- for 循环。 --------------------编程问答-------------------- --------------------编程问答-------------------- forumList2 = forumList 只是2个引用名指向了同一个对象
所以你改forumList指向的对象 forumList2指向的对象也发生了变化 --------------------编程问答-------------------- forumList2 = forumList;加这个干嘛 --------------------编程问答-------------------- 如果非要复制的话,那么创建一个大小一样的list,然后一个个拷贝过去。:) --------------------编程问答-------------------- foreach (ForumInfo foruminfo in forumList2.ToArray())
改成这样就好了 --------------------编程问答-------------------- 先区别一下引用类型和值类型。 --------------------编程问答--------------------
补充:.NET技术 , C#