C# 将数据添加到for循环内部的二维数组中

C# 将数据添加到for循环内部的二维数组中,c#,arrays,C#,Arrays,我想制作一个简单的应用程序,在listview列中列出文件夹中的所有文件,子目录路径是另一列。为此,我创建了一个二维数组,并尝试将文件名添加到第一列,将路径添加到另一列。这是我的密码 { string pathtoList; string fileName; string DirName; pathtoList = (@"D:\Videos"); string[] allFileNames

我想制作一个简单的应用程序,在listview列中列出文件夹中的所有文件,子目录路径是另一列。为此,我创建了一个二维数组,并尝试将文件名添加到第一列,将路径添加到另一列。这是我的密码

  {
        string pathtoList;
        string fileName;
        string DirName;

        pathtoList = (@"D:\Videos");
        string[] allFileNames = System.IO.Directory.GetFiles(pathtoList, "*.*", System.IO.SearchOption.AllDirectories);
        string[,] call1= new string[allFileNames.Length,2];
        for (int i = 0; i< allFileNames.Length; i++)
        {
            fileName = System.IO.Path.GetFileNameWithoutExtension(allFileNames[i].ToString());
            DirName = System.IO.Path.GetDirectoryName(allFileNames[i].ToString());
            call1[0, i] = fileName;
            call1[1, i] = DirName;
        }
    }
{
弦乐探路者;
字符串文件名;
字符串名称;
路径列表=(@“D:\Videos”);
字符串[]allFileNames=System.IO.Directory.GetFiles(路径列表,“**”,System.IO.SearchOption.AllDirectories);
string[,]call1=新字符串[AllFileName.Length,2];
for(int i=0;i
当我这样做时,我得到一个异常“索引超出了数组的边界” 有人能告诉我这是怎么回事吗? 谢谢你声明了数组

[allFileNames.Length,2]
然后切换索引,这是一个解决方案

call1[i, 0] = fileName;
call1[i, 1] = DirName;
您声明了数组

[allFileNames.Length,2]
然后切换索引,这是一个解决方案

call1[i, 0] = fileName;
call1[i, 1] = DirName;

您切换了索引,这应该可以工作:

 {
        string pathtoList;
        string fileName;
        string DirName;

        pathtoList = (@"D:\Videos");
        string[] allFileNames = System.IO.Directory.GetFiles(pathtoList, "*.*", System.IO.SearchOption.AllDirectories);
        string[,] call1= new string[allFileNames.Length,2];
        for (int i = 0; i< allFileNames.Length; i++)
        {
            fileName = System.IO.Path.GetFileNameWithoutExtension(allFileNames[i].ToString());
            DirName = System.IO.Path.GetDirectoryName(allFileNames[i].ToString());
            call1[i, 0] = fileName; // or leave it as it was before and declare string[,] call1= new string[2, allFileNames.Length];
            call1[i, 1] = DirName; //same as above
        }
    }
{
弦乐探路者;
字符串文件名;
字符串名称;
路径列表=(@“D:\Videos”);
字符串[]allFileNames=System.IO.Directory.GetFiles(路径列表,“**”,System.IO.SearchOption.AllDirectories);
string[,]call1=新字符串[AllFileName.Length,2];
for(int i=0;i
您切换了索引,这应该可以工作:

 {
        string pathtoList;
        string fileName;
        string DirName;

        pathtoList = (@"D:\Videos");
        string[] allFileNames = System.IO.Directory.GetFiles(pathtoList, "*.*", System.IO.SearchOption.AllDirectories);
        string[,] call1= new string[allFileNames.Length,2];
        for (int i = 0; i< allFileNames.Length; i++)
        {
            fileName = System.IO.Path.GetFileNameWithoutExtension(allFileNames[i].ToString());
            DirName = System.IO.Path.GetDirectoryName(allFileNames[i].ToString());
            call1[i, 0] = fileName; // or leave it as it was before and declare string[,] call1= new string[2, allFileNames.Length];
            call1[i, 1] = DirName; //same as above
        }
    }
{
弦乐探路者;
字符串文件名;
字符串名称;
路径列表=(@“D:\Videos”);
字符串[]allFileNames=System.IO.Directory.GetFiles(路径列表,“**”,System.IO.SearchOption.AllDirectories);
string[,]call1=新字符串[AllFileName.Length,2];
for(int i=0;i