0

我在对象 FileInfo[] 中有一个文件数组。

在我的服务中,我目前正在遍历文件并处理它们。

我想遍历文件,并在处理它们时将它们从集合中删除。

我认为队列是理想的选择,但是如何循环遍历队列集合?

(以前从未在 C# 中使用过队列)

4

5 回答 5

2
using System.Collections.Generic;

private void DoSomething(FileInfo [] files)
{
    Queue<FileInfo> f = new Queue<FileInfo>(files);

    while (f.Count > 0) {
        FileInfo current = f.Dequeue();

        // Process 'current'
    }
}
于 2009-02-18T15:49:08.120 回答
1

您遍历队列的方式与遍历 C# 中的大多数其他集合的方式相同 - 使用foreach

foreach (FileInfo file in queue)
{
    // Do stuff
}

但是,如果您使用上面的代码,则不能将其添加到正文中的队列中。如果你想这样做,你应该这样做:

while (queue.Count > 0)
{
    FileInfo file = queue.Dequeue();
    // You can still use queue.Enqueue() here
}

(这两个假设queue是类型Queue<FileInfo>。)

于 2009-02-18T15:48:04.067 回答
1

使用 Queue 在处理它们时从队列中弹出项目。

while (queue.Count > 0) {
  T item = queue.Dequeue()
  ProcessItem(item)
}

队列还实现了 IEnumberable,因此您也可以使用 foreach,但(通常)您不能修改您正在枚举的集合。

于 2009-02-18T15:48:36.047 回答
1
Queue<FileInfo> q = new Queue<FileInfo>(yourFileInfoArray);

while (q.Count > 0)
{
    FileInfo fi = q.Dequeue();
    // do stuff with fi
}
于 2009-02-18T15:50:06.277 回答
1

另一种方法是简单地向后遍历 FileInfo 数组,然后弹出每个元素。

FileInfo[] f = ... 

for(int i = f.Length - 1; i >= 0; i--)
{
   // Do something
   f.RemoveAt[i];
}
于 2009-02-18T15:51:19.143 回答