C#使用ArrayList.IndexOf和多个相同的项目

Ada*_*ers 4 c# arraylist

我有一种情况,我使用ArrayList来存储文件名列表(完整文件路径).当我向数组添加同一文件的多个项目时,使用ArrayList.IndexOf查找索引(我向BackgroundWorker报告进度),它总是返回第一个项目的索引,因为它按文件名搜索.这会导致进度条出现问题,即我正在处理3个文件,完成后,条形仅为1/3满.

这是一些示例代码(我只是在这里添加项目,但在实际代码中它们是从ListBox添加的):

ArrayList list = new ArrayList();

list.Add("C:\Test\TestFile1.txt");
list.Add("C:\Test\TestFile1.txt");
list.Add("C:\Test\TestFile1.txt");

var files = list;
foreach (string file in files)
    backgroundWorker1.ReportProgress(files.IndexOf(file) + 1);
Run Code Online (Sandbox Code Playgroud)

当此运行时,仅报告1"百分比"的进度,因为IndexOf每次都找到相同的文件.有没有办法解决?或者是否有人建议以另一种方式获取索引(或每个项目的任何唯一标识符)?

Jon*_*eet 7

最简单的方法就是使用索引进行迭代:

for (int i = 0; i < list.Count; i++)
{
    backgroundWorks.ReportProgress(i + 1);
    // Do stuff with list[i]
}
Run Code Online (Sandbox Code Playgroud)