Только возвращение единственного символа - PullRequest
0 голосов
/ 03 мая 2020

Всякий раз, когда я запускаю этот код, он возвращает один символ. Я пробовал разные вещи, и самое большее, он возвращает 5 или около того строк, каждая из которых содержит один символ. Я пытаюсь найти каждую папку в папке «Пользователи» и составить свой список кодов, любая помощь будет признательна.

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace ConsoleApp3
{
    class Program
    {
        static void Main(string[] args)
        {
            //Search for directories and foreach, try to start discord
            try
            {
                var Bruhm = new List<string>();
                Bruhm.Add(Directory.GetDirectories(@"C:\Users\").ToString());
                int y = 0;
                foreach (string x in Bruhm) { 
                    Console.WriteLine(x[y]);
                   y = y+1;

                }
            }
            catch(Exception e)
            {
                Console.WriteLine(e);
                System.Threading.Thread.Sleep(-1);
            }
            System.Threading.Thread.Sleep(-1);
        }
    }
}

Ответы [ 3 ]

0 голосов
/ 03 мая 2020

Вы преобразуете список в строку и печатаете его индекс, и он дает неверный результат. Вы можете извлечь имя папки, используя этот код. «C: \ Users \» удалено из пути к папке, чтобы указать имя папки, а не путь.

var path = @"C:\Users\";
var Bruhm = Directory.GetDirectories(path).Select(x => x.Substring(path.Length));
foreach (string x in Bruhm)
{
    Console.WriteLine(x);
}
0 голосов
/ 03 мая 2020

Это довольно просто. Вы делаете ошибку с этим: Directory.GetDirectories (@ "C: \ Users \"). ToString ()

Вместо этого попробуйте это:

var Bruhm = Directory.GetDirectories(@"C:\Users\");
foreach(var subdir in Bruhm)
    Console.WriteLine(subDir);
0 голосов
/ 03 мая 2020

Первая ошибка, которую вы делаете:

Bruhm.Add(Directory.GetDirectories(@"C:\Users\").ToString());

добавит в ваш список только одну строку, которая System.String[].

Вторая ошибка: x[y] будет выведите только один символ, который является символом индекса y внутри строки x.

Измените Add () на AddRange () и не вызывайте ToString () в вашем списке.

Попробуйте это:

var Bruhm = new List<string>();
Bruhm.AddRange(Directory.GetDirectories(@"C:\Users\"));
foreach (string x in Bruhm)
{
    Console.WriteLine(x);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...