在使用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;
}发布于 2014-02-16 12:36:57
您使用的是相同的temp实例,每次都要创建新实例:
而不是
temp.Clear();做
List<Packet> temp = new List<Packet>();https://stackoverflow.com/questions/21811164
复制相似问题