当前位置:编程学习 > C#/ASP.NET >>

请教一个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#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,