c# - 每个都有一个动态列表?

标签 c# dynamic foreach arraylist

我有一个遍历数据库的 for each 循环,用于检查已标记为要转换的文件。目前我有以下代码:

            /* All files flagged for invidual conversion will be stored in here. */
            ArrayList files = vc.getFilesForInvidualConversion();
            foreach (FileInfoExtended file in files)
            {
                // As long as the status flag hasn't been changed it can continue.
                if (abort == false)
                {
                    if (vc.isFileInUse(file) == false)
                    {
                            // Converting the video file.
                            vc.convertVideoToFLV(file);
                    }
                }
                vc.getFilesForInvidualConversion();
            }

在第一行中,您可以看到我用对象填充了一个 ArrayList,它将通过每个对象运行一个对象。但是,在列表中的每个文件之后,我想检查是否有可能需要转换的新文件。当我再次填充 ArrayList 时,for each 似乎没有注意到,它继续使用从第一行代码接收到的原始文件。我宁愿希望它更新"file"-ArrayList,以便它也可以转换新文件。

这可能吗?

编辑:您提供的所有答案都适用于此场景,但我想添加一些内容。是否可以在循环期间从列表中删除文件?并让它不会转换那个?

编辑 2: 这就是我现在拥有的:

            List<FileInfoExtended> files = vc.getFilesForInvidualConversion();
            while (files.Count > 0)
            {
                if (abort == false)
                {
                    if (vc.isFileInUse(files[0]))
                    {
                        vc.convertVideoToFLV(files[0]);
                    }
                }
                files = vc.getFilesForInvidualConversion();
            }

它在两种情况下都有效(将文件添加到列表时和从列表中删除文件时)。我不知道它在性能方面是否是一个好的解决方案,但现在它适合我的需要。除非我忽略了一些问题?

任何评论将不胜感激! 亲切的问候, 弗洛里斯

最佳答案

我建议使用其他一些集合而不是 ArrayList .例如Stack<T> .然后这样写:

while (stack.Any())
{
    var item = stack.Pop();
    // convert item
}

// All items were converted

您可以随时stack.Push()新项目。

P.S.:使用非通用 ArrayList 有什么意义吗? ?

关于c# - 每个都有一个动态列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6128549/

相关文章:

java - 如何在 Android 中发出 httppost 请求?

c# - 如何找到 Microsoft.AspNetCore.App 共享框架中包含的所有包?

c# - WCF 服务如何与我的 winform 应用程序交互?

c# - CssClass 不起作用

mysql - 遍历更新查询 pdo where id

r - 让foreach()和ggplot2相处融洽

c# - Json 反序列化 - 如何将剩余项目添加到字典中?

c - 读取 pgm 文件

c++ - 函数调用中的堆和删除。如何删除本地动态内存?

.net - 如何根据属性编号获取类的属性值