объект list структуры никогда не назначается и всегда будет иметь значение по умолчанию null - PullRequest
0 голосов
/ 09 февраля 2019

Как мне инициализировать список структуры.Struct можно инициализировать, но просто используя мой список, он говорит: Папка никогда не назначается и всегда будет иметь значение по умолчанию null

private struct directories
        {
            public List<string[]> Folder;
        }



directories d1 = new directories();
d1.Folder.Add(Directory.GetDirectories(path1));

1 Ответ

0 голосов
/ 09 февраля 2019

Проблема со структурами заключается в том, что их конструктор не гарантированно работает.Например, при создании массива var array = new directories[10];.Поэтому структуры не могут иметь инициализаторов и явных конструкторов без параметров.

В этом примере я использую ленивую инициализацию для обеспечения инициализации списка папок.

private struct directories
{
    private List<string[]> _folder;
    public List<string[]> Folder
    {
        get {
            if (_folder == null) {
                _folder = new List<string[]>();
            }
            return _folder;
        }
    }
}

Но в этом случае я быпросто используйте существующий класс DirectoryInfo из пространства имен System.IO.Это делает это и многое другое для вас.Не изобретайте колесо заново.

DirectoryInfo rootDir = new DirectoryInfo(path1);
DirectoryInfo[] directories = rootDir.GetDirectories("*", SearchOption.AllDirectories);

Оба, GetDirectories и GetFiles имеют перегрузки, позволяющие вам указать шаблоны поиска и хотите ли вы возвращать подкаталоги.

...