循环在.NET中的三个项目列表中出列

时间:2015-05-28 12:50:32

标签: c# .net loops queue

我有一个包含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一次将一个字符串出列到Item1Item2Item3,最后items包含从“line-0”到“line-14”的字符串”。 对于某些原因,“line-15”到“line-18”仍留在队列中

我想要的是什么:

items包含从“line-0”到“line-18”的字符串 - 来自queuestr的所有字符串

1 个答案:

答案 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(),
    });
}