使用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;
}
答案 0 :(得分:2)
您正在使用temp
的相同实例,并且您希望每次都创建新实例:
而不是
temp.Clear();
做
List<Packet> temp = new List<Packet>();