C# 将数组数据添加到列表:无法将System.DirectoryInfo[]转换为字符串

C# 将数组数据添加到列表:无法将System.DirectoryInfo[]转换为字符串,c#,C#,基本上,这是我在索引和存储数据方面的noob尝试。我使用DirectoryInfo类创建了两个列表,用于存储来自不同阵列的目录和文件 我在子目录list.Add(子目录)处遇到编译器错误,DirectoryInfo[]directoryFiles=di.GetFiles(子目录列表)和FilesList.Add(directoryFiles) 其中大多数声明: 使用未分配的局部变量。无法转换 System.DirectoryInfo[]转换为字符串 我试过几种不同的方法,感觉非常接近。我也复习了

基本上,这是我在索引和存储数据方面的noob尝试。我使用DirectoryInfo类创建了两个列表,用于存储来自不同阵列的目录和文件

我在
子目录list.Add(子目录)处遇到编译器错误
DirectoryInfo[]directoryFiles=di.GetFiles(子目录列表)
FilesList.Add(directoryFiles)

其中大多数声明:

使用未分配的局部变量。无法转换 System.DirectoryInfo[]转换为字符串

我试过几种不同的方法,感觉非常接近。我也复习了一些c#List教程,但无法将超级简单的示例转化为我的函数

        List<string> FilesList;
        List<string> SubDirectoriesList;

        DirectoryInfo di = new DirectoryInfo(fbd.SelectedPath);

        //GETS SUBDIRECTORIES FROM SELECTED PATH
        DirectoryInfo[] subdirectories = di.GetDirectories();
        for (int i = 0; subdirectories.Length >= 0; i++)
        {
            if (i > subdirectories.Length - 1)
            {
                break;
            }

            //ADD SUBDIRECTORIES TO LIST
            SubDirectoriesList.Add(subdirectories);
        }

        //GETS FILES FROM SUBDIRECTORIES IN LIST
        DirectoryInfo[] directoryFiles = di.GetFiles(SubDirectoriesList);
        for (int i = 0; directoryFiles.Length >= 0; i++)
        {
            if (i > directoryFiles.Length - 1)
            {
                break;
            }

            //ADD FILES TO FILES LIST
            FilesList.Add(directoryFiles);
        }
    }
List文件列表;
列表子目录列表;
DirectoryInfo di=新的DirectoryInfo(fbd.SelectedPath);
//从所选路径获取子目录
DirectoryInfo[]子目录=di.getDirectory();
对于(int i=0;子目录。长度>=0;i++)
{
if(i>子目录.长度-1)
{
打破
}
//将子目录添加到列表中
添加(子目录);
}
//从列表中的子目录获取文件
DirectoryInfo[]directoryFiles=di.GetFiles(子目录列表);
对于(int i=0;directoryFiles.Length>=0;i++)
{
if(i>directoryFiles.Length-1)
{
打破
}
//将文件添加到文件列表
添加(目录文件);
}
}

我猜您是在尝试:

List<string> FilesList = new List<string>();
List<string> SubDirectoriesList = new List<string>();

DirectoryInfo di = new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.Desktop));

//GETS SUBDIRECTORIES FROM SELECTED PATH
DirectoryInfo[] subdirectories = di.GetDirectories();
for (int i = 0; subdirectories.Length >= 0; i++)
{
    if (i > subdirectories.Length - 1)
    {
        break;
    }

    //ADD SUBDIRECTORIES TO LIST
    SubDirectoriesList.Add(subdirectories[i].FullName);
}

//GETS FILES FROM SUBDIRECTORIES IN LIST

//Loop all sub directory files
foreach (var fileItem in SubDirectoriesList)
{
    string[] directoryFiles =  Directory.GetFiles(fileItem);
    for (int i = 0; directoryFiles.Length >= 0; i++)
    {
        if (i > directoryFiles.Length - 1)
        {
            break;
        }

        //ADD FILES TO FILES LIST
        FilesList.Add(directoryFiles[i]);
    }

}
List FilesList=newlist();
列表子目录列表=新列表();
DirectoryInfo di=newdirectoryinfo(Environment.GetFolderPath(Environment.SpecialFolder.Desktop));
//从所选路径获取子目录
DirectoryInfo[]子目录=di.getDirectory();
对于(int i=0;子目录。长度>=0;i++)
{
if(i>子目录.长度-1)
{
打破
}
//将子目录添加到列表中
子目录list.Add(子目录[i].FullName);
}
//从列表中的子目录获取文件
//循环所有子目录文件
foreach(子目录列表中的var fileItem)
{
字符串[]directoryFiles=Directory.GetFiles(fileItem);
对于(int i=0;directoryFiles.Length>=0;i++)
{
if(i>directoryFiles.Length-1)
{
打破
}
//将文件添加到文件列表
Add(directoryFiles[i]);
}
}

在尝试添加之前,似乎没有初始化列表的子目录列表

错误很明显,您没有更新列表,子目录不是string类型。要么有一个子目录类型的列表,要么把它们转换成一个字符串。创建对象实例和在循环中使用索引,这些都是非常简单的事情。我们不可能用勺子喂你,你必须自己学习基础知识。祝你好运当您得到这个“cannotconvert…error”时,这通常意味着您将错误的参数作为参数传递给方法。您需要阅读相关方法的文档,找出out需要哪种类型的参数,并准确地传递这种类型。我的注释指的是方法
Add
GetDirectories
yes。太好了,谢谢。实例化列表很容易。但是我需要这个示例来查看foreach循环声明新变量以及Directory.Info[]无法创建新directoryFiles数组的原因。我没有意识到我不再尝试使用DirectoryInfo的选定路径来获取数据,而是尝试从子目录数组获取数据。