C#数组是否可能在内存中溢出并相互覆盖?

时间:2018-02-16 18:04:20

标签: c# .net windows

我正在尝试用C#编写一个程序,用于解析新文件名的大文本,并将文件列表重命名为从文本文件中获取的名称。

所以在我的程序中,我们看到类似的东西:

string[] newNames = parseNames(txtFileName.Text);
string[] previousNames = getFileNames(txtFolder.Text);

在newNames中,我们有900多个名称,格式类似于“01208265-9”,而在previousNames中,我们应该使用与“Video1001”相似的旧格式的文件名数。

这就是函数getFileNames的样子:

    private string[] getFileNames(string inputText)
    {
        //get the file names of all the files in the folder
        //note, does not contain path, only file names
        string[] FileNames;

        DirectoryInfo folder = new DirectoryInfo(txtFolder.Text);
        FileInfo[] Files2 = folder.GetFiles("*.avi");

        FileNames = new string[Files2.Length];
        for (int i = 0; i < Files2.Length; i++)
        {
            FileNames[i] = Files2[i].Name;
        }
        nameCompare comparer2 = new nameCompare();
        Array.Sort(FileNames, comparer2);
        return FileNames;
    }

它是一个非常简单的函数,它接收文件夹的路径,并拉入该目录中的所有文件名,然后它对名称进行排序并返回数组。

问题是,当我运行代码时,我看到了这个问题: Notice the first entry

注意数组中的第一个条目。我检查了两倍,三倍和四倍,以确保文件夹中没有新格式的文件。当我在900多个文件的较大数据集上运行程序时,只会弹出此问题。

我老老实实地感到困惑,我认为唯一的可能性就是DirectoryInfo.GetFiles()出现了问题我觉得不太可能,因为那是.net核心库的一部分,或者存在问题使用C#内存管理,以前奇怪的是,以前的数组覆盖了我的新数组中的第一个条目。

有没有人有任何想法?

0 个答案:

没有答案