[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;lt;T&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;lt;T&amp;amp;amp;gt;[] Children { get; private set; }
public Tree<T>[] Children { get; private set; }
P.S. Няколко пъту редактирах code snippet-ите, но винаги ми escape-ва < и >. Има ли начин да предотвратя това?
Защо да ни трябва да знаем дължината на масива? Аз не инициализирам масив, а просто казвам, че даденото property да е от тип масив. По тази логика не значи ли, че никога не може да имаме property от тип масив, защото не знаем размера?
Пропъртито е от тип List, за да може да се добавят още children към 1 node. Защото в List-а можеш да добавяш елементи и той да се преоразмерява, а масива е с фиксирана дължина. Може всеки път да правиш нов масив при добавяне на нов child и да копираш останалите children в новия масив, но няма смисъл, защото List-а точно това прави :). Аз само имам въпрос защо Пропъртито е IList, а не само List, и каква е разликата и по-добре ли е да се използва едното пред другото :).
Добре, това за List-а го разбирам, но тогава и аз се присъединявам към твоя въпрос.