将List <packet>添加到List <list <packet>&gt;?</list <packet> </packet>时遇到困难

时间:2014-02-16 12:34:41

标签: c#

使用List<Packet>方法向List<List<Packet>>添加.Add时遇到问题。我正在使用嵌套的for循环,当它退出List<List<Packet>>时,所有条目都填充了最后一个循环中迭代的最后List<Packet>。它正在替换所有旧值,我调试了代码并观察了这种情况。这样做的正确方法是什么?

这是我正在使用的代码:

static List<List<Packet>> generateRandomLists()
        {
            List<Packet> myList = getListOfItems();
            object syncLock = new object();
            int randomNo;

            List<List<Packet>> lists = new List<List<Packet>>();
            List<Packet> temp = new List<Packet>();
            const int SIZE = 10;
            for (int i = 0; i<SIZE ; i++)
            {
                temp.Clear();
                const int THRESHOLD = 48;
                for (int j = 0; getWeightOfBag(temp)<THRESHOLD; j++)
                {
                    lock(syncLock)
                    {
                        randomNo = rand1.Next(0, myList.Count);
                        Console.Write("{0}, ", randomNo);
                    }
                    temp.Add(myList[randomNo]);
                }
                Console.WriteLine();
                lists.Add(temp);
            }
            return lists;
        }

1 个答案:

答案 0 :(得分:2)

您正在使用temp的相同实例,并且您希望每次都创建新实例:

而不是

temp.Clear();

List<Packet> temp = new List<Packet>();