Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > .NET фреймворки > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 05.10.2019, 13:29   #1
Vamo
 
Регистрация: 17.02.2019
Сообщений: 3
По умолчанию Данные в виде дерева - кто знает библиотеку?

Чтобы как компонент Treeview, но не visual. И можно было привязывать собственные объекты. К примеру классы или кортежы.
Vamo вне форума Ответить с цитированием
Старый 05.10.2019, 13:39   #2
Alex11223
Заблокирован
 
Регистрация: 12.01.2011
Сообщений: 19,504
По умолчанию

Так что именно сделать-то надо?

Что мешает просто создать класс Node со свойством типа Node[] Children?
Alex11223 вне форума Ответить с цитированием
Старый 05.10.2019, 14:47   #3
Vamo
 
Регистрация: 17.02.2019
Сообщений: 3
По умолчанию

А в Node есть возможность создавать потомков детей и обращаться к ним по индексу? Ато я сейчас погуглить не могу.
Vamo вне форума Ответить с цитированием
Старый 05.10.2019, 14:52   #4
Alex11223
Заблокирован
 
Регистрация: 12.01.2011
Сообщений: 19,504
По умолчанию

Node это ваш класс.

Стандартный List<T> например конечно позволяет легко добавлять элементы (или если хватит только во время инициализации, типа имутабельно, то передавайте IEnumerable в конструктор).
Alex11223 вне форума Ответить с цитированием
Старый 05.10.2019, 15:09   #5
Vamo
 
Регистрация: 17.02.2019
Сообщений: 3
По умолчанию

Нужен именно как List<T> класс, но только дерево.
Vamo вне форума Ответить с цитированием
Старый 05.10.2019, 17:36   #6
Alex11223
Заблокирован
 
Регистрация: 12.01.2011
Сообщений: 19,504
По умолчанию

И? Я ж и говорю, сделайте List<Node> Children.
Или Dictionary если надо по именам обращаться.
Код:
    class Node
    {
        public Node(string value, IEnumerable<Node> children)
        {
            Value = value;
            Children = new List<Node>(children);
        }

        public Node(string value) : this(value, new List<Node>())
        { }

        public string Value { get; }
        public List<Node> Children { get; }

        public override string ToString()
        {
            return $"{Value}, [{String.Join(", ", Children)}]";
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            var tree = new Node("Hello", new []
            {
                new Node("world"), 
                new Node("We", new []
                {
                    new Node("need", new []
                    {
                        new Node("to", new []
                        {
                            new Node("go", new []
                            {
                                new Node("deeper"), 
                            }), 
                        }), 
                    }), 
                }), 
            });
            tree.Children.Add(new Node("new node"));
            tree.Children[1].Children.Insert(0, new Node("don't"));
            
            Console.WriteLine(tree);
        }
    }

Последний раз редактировалось Alex11223; 05.10.2019 в 18:21.
Alex11223 вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Файл в виде В-дерева Stalig Фриланс 2 15.05.2013 18:11
XSD - схема в виде дерева m9yt C# (си шарп) 2 30.04.2013 14:54
Таблица в виде дерева НП... PHP 4 15.06.2010 14:12
DBGridEh. представить данные из таблицы в виде дерева yellow87 Компоненты Delphi 0 19.02.2010 03:56
Меню в виде дерева pu4koff JavaScript, Ajax 7 16.10.2007 10:24


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Здесь нужно купить рекламу за 7 тыс руб в месяц! )
пишите сюда - alarforum@yandex.ru
ИКС 840