首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FileInfo[]数组,希望将其添加到队列中,以便每个文件只处理一次并删除

问FileInfo[]数组,希望将其添加到队列中,以便每个文件只处理一次并删除
EN

Stack Overflow用户
提问于 2009-02-18 15:45:05
回答 5查看 4.3K关注 0票数 0

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

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

我希望循环遍历这些文件,并在处理它们时将它们从集合中删除。

我认为队列是最理想的,但是我如何循环队列集合呢?

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

EN

回答 5

Stack Overflow用户

发布于 2009-02-18 15:49:08

代码语言:javascript
复制
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'
    }
}
票数 2
EN

Stack Overflow用户

发布于 2009-02-18 15:48:04

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

代码语言:javascript
复制
foreach (FileInfo file in queue)
{
    // Do stuff
}

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

代码语言:javascript
复制
while (queue.Count > 0)
{
    FileInfo file = queue.Dequeue();
    // You can still use queue.Enqueue() here
}

(这两种方法都假设queue的类型为Queue<FileInfo>。)

票数 1
EN

Stack Overflow用户

发布于 2009-02-18 15:48:36

使用队列,当您处理项目时,将项目从队列中弹出。

代码语言:javascript
复制
while (queue.Count > 0) {
  T item = queue.Dequeue()
  ProcessItem(item)
}

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/561601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档