Добавление данных в 2D-массив внутри цикла for - PullRequest
0 голосов
/ 13 июля 2020

Я хочу создать простое приложение, которое перечисляет все файлы в папке в столбце списка, а путь к подкаталогу - это другой столбец. для этого я создал 2D-массив и попытался добавить имя файла в первый столбец и путь к другому. это мой код

  {
        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;
        }
    }

когда я делаю это, я получаю исключение «Индекс находился за пределами массива». Кто-нибудь может сказать, что не так в этой треске? спасибо

Ответы [ 2 ]

1 голос
/ 13 июля 2020

Вы переключили индексы, должно работать:

 {
        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
        }
    }
1 голос
/ 13 июля 2020

Вы объявили массив

[allFileNames.Length,2]

Затем вы переключили индексы, это решение

call1[i, 0] = fileName;
call1[i, 1] = DirName;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...