我有一个包含18个元素的字符串类型的队列,但这可能会有所不同。
我的代码:
var items = new List<BaseClass>();
Queue<string> queuestr = new Queue<string>();
for (int i = 0; i < 18; i++)
{
queuestr.Enqueue("line - " + i.ToString());
}
for (int i = 0; i < queuestr.Count; i++)
{
items.Add(new queuestrtem
{
Item1 = queuestr.Dequeue(),
Item2 = queuestr.Dequeue(),
Item3 = queuestr.Dequeue(),
});
}
它的作用:
queuestr一次将一个字符串出列到Item1
,Item2
,Item3
,最后items
包含从“line-0”到“line-14”的字符串”。
对于某些原因,“line-15”到“line-18”仍留在队列中
我想要的是什么:
items
包含从“line-0”到“line-18”的字符串 - 来自queuestr
的所有字符串
答案 0 :(得分:4)
支票i < queuestr.Count
不符合逻辑。这两个数字之间有什么关系?在某些时候,i
的值将高于队列中的项目数。
最好是使用while循环。检查> 2
是为了确保您可以排队三次。
while (queuestr.Count > 2) {
items.Add(new queuestrtem {
Item1 = queuestr.Dequeue(),
Item2 = queuestr.Dequeue(),
Item3 = queuestr.Dequeue(),
});
}