Loading...
alexpopov avatar alexpopov 5 Точки

[Exercise] Trees - защо типът на Children property-то на клас Tree и типът на children аргументът в конструктора се различават?

В упражненията към темата за дърветата в подточка 3 имаме:

public IList<Tree<T>> Children { get; private set; }

public IList<Tree<T>> Children { get; private set; }

Същевременно конструктора изглежда така:

 public Tree(T value, params Tree&amp;amp;amp;amp;amp;amp;amp;lt;T&amp;amp;amp;amp;amp;amp;amp;gt;[] children)

public Tree(T value, params Tree<T>[] children)

Какъв е смисълът да дефинираме property-то с IList, като после в конструктура си налагаме винаги да очакваме array? Защо просто не дефинираме property-то с array:

public Tree&amp;amp;amp;amp;lt;T&amp;amp;amp;amp;gt;[] Children { get; private set; }

public Tree<T>[] Children { get; private set; }

P.S. Няколко пъту редактирах code snippet-ите, но винаги ми escape-ва < и >. Има ли начин да предотвратя това?

Тагове:
1
Структури от данни и алгоритми 22/07/2015 10:13:33
RoYaL avatar RoYaL Trainer 6849 Точки

Не дефинираме пропъртито като Array защото не знаем дължината му :) Плюс това в конструктура в по-голямата част от случаите не очакваме колекция, а поредица, т.е. изредени със запетайка аргументи (за това е и params - което прави variadic function)

4
22/07/2015 10:24:58
alexpopov avatar alexpopov 5 Точки

Защо да ни трябва да знаем дължината на масива? Аз не инициализирам масив, а просто казвам, че даденото property да е от тип масив. По тази логика не значи ли, че никога не може да имаме property от тип масив, защото не знаем размера?

0
MartinDachev avatar MartinDachev 30 Точки

Пропъртито е от тип List, за да може да се добавят още children към 1 node. Защото в List-а можеш да добавяш елементи и той да се преоразмерява, а масива е с фиксирана дължина. Може всеки път да правиш нов масив при добавяне на нов child и да копираш останалите children в новия масив, но няма смисъл, защото List-а точно това прави :). Аз само имам въпрос защо Пропъртито е IList, а не само List, и каква е разликата и по-добре ли е да се използва едното пред другото :).

0
22/07/2015 23:01:02
alexpopov avatar alexpopov 5 Точки

Добре, това за List-а го разбирам, но тогава и аз се присъединявам към твоя въпрос.

0
plamen.yovchev avatar plamen.yovchev 5 Точки

Да използвам темата на колегата, защо в children в параметрите на конструктура не получавам другите дървета, а само value-то?

Следвам примера 1:1 от упражненията...?

0
RoYaL avatar RoYaL Trainer 6849 Точки

Би ли показал код кое точно визираш?

0
plamen.yovchev avatar plamen.yovchev 5 Точки

Нещо беше бъгнало студиото :)

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.