Должен ли я использовать связанный список или список ...
Ответ зависит от того, что представляет ваш объект и как вы собираетесь его использовать. Например, если я представлял дома, и людей, которые живут в каждом доме; тогда я могу выбрать коллекцию из House
объектов. Я использую collection в качестве общего термина: в частности, я бы, вероятно, использовал List<T>
из пространства имен System.Collections.Generic
(где T может представлять любой тип, поэтому в этом случае это будет List<House>
случай), если только мне не нужно что-то более конкретное, например Stack<T>
, Queue<T>
, Dictionary<T,U>
и т. д. и т. д.
Обратите внимание, что в этом подходе каждый House
не знает, какой дом является следующим , поскольку вся концепция «следующего» относится к коллекции домов : каждый индивидуальный дом не должен знать, где он находится в коллекции - это ответственность коллекции. Это принцип дизайна, который называется «разделение интересов».
Например, если я хотел создать другую коллекцию объектов House
(например, с красными передними дверями), я мог бы сделать это, создав новую коллекцию, ссылаясь на то же самое House
объектов; тогда как при упомянутом подходе к объекту, имеющему ссылку на следующий, мне пришлось бы создать другой объект House
, потому что значение next в этих двух коллекциях будет различным.
Использование List<T>
позволяет вам сосредоточиться на написании своих классов вместо того, чтобы писать реализацию коллекции.
Существуют также причины снижения производительности при использовании связанных списков, если только вы не планируете получать доступ к данным в последовательном порядке.
Каждый House
имеет собрание людей. Так что я мог бы поместить свойство на House
с именем People
, типа List<Person>
. И если бы мне нужно было добраться до дома, с которым был связан человек, у меня могло бы быть свойство на Person
с именем House
, типа House
.
Я надеюсь, что эта структура Домов и Людей соответствует вашему сценарию с Системами и Планетами.
Возможно, также стоит посмотреть Когда мне следует использовать List против LinkedList
... и как его сериализовать.
Много в интернете, попробуйте эти ...
Как сериализовать список ?
https://www.thomaslevesque.com/2009/06/12/c-parentchild-relationship-and-xml-serialization/
Надеюсь, это поможет вам начать.