Хранение данных объектов в C#, что выбрать? [закрыт]

100
12 июля 2021, 16:50
Закрыт. Данный вопрос необходимо конкретизировать. Ответы на него в данный момент не принимаются.

Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы он был сосредоточен только на одной проблеме.

Закрыт 1 год назад.

Улучшить вопрос

Я только начал изучать C# как хобби для несерьёзного программирования. Первое задание - простая консольная RPG-подобная игра. Герой ходит по пещерам, сражается с монстрами и собирает сундуки.

В ходе игры надо генерировать предметы (оружие и доспехи), изменять их данные (показатель прочности), работать с инвентарем. Я уже смог описать нужные классы и конструкторы и могу создавать новые предметы со случайными параметрами. Но экземпляров этих классов будет много, после каждого боя выпадает новый предмет.

Где хранить данные об этих предметах, чтобы было проще видеть происходящее и не слишком сложно в реализации? В списках List? В xml-файле? В excel-таблице? В базе данных? Еще где-то?

UPDATE: Речь не о реализации сохранения/загрузки, а о хранении данных в процессе игры. Например, если складывать всё в коллекцию, то не очень понятно как смотреть и проверять, корректно ли применяются изменения. Возможно, для этого хорошо подойдет SQLite?

Answer 1

Если речь идет о хобби, то для начала сойдет и обычная коллекция.

А вообще очень рекомендую изучить игровые паттерны проектирования, большинство ответов Вы найдете здесь:

  1. Оригинал на английском
  2. Русский перевод

Очень поможет в изучении подходов к построению понятной игровой архитектуры, которая позволит легко создавать новые объекты с динамическими параметрами.

Если объектов действительно много, то для оптимизации производительности и памяти предлагаю вот этот паттерн из шаблонов оптимизации: Пул Объектов

Answer 2

У меня тоже была проблема с хранением обьектов и я решил её так: в процессе работы программы она создавала обьекты и сохраняла их в коллекции (в данном случае List), далее при нажатии кнопки коллекция подвергалась сериализации и сохранялась в файлике формата json. когда нужно было загрузить данные файлик десериализировался опять в коллекцию List с теми же обьектами. В общем тебе может помочь сериализация и десериализация в json.

READ ALSO
Публикация exe файлов ClickOnce c#

Публикация exe файлов ClickOnce c#

Возникла проблема с ClickOnce, а именно:

89
Обновление текста в метке

Обновление текста в метке

Имеется успешно объявленный и работающий stepper, а также метка

109
Какой код выполняется в GetHashCode для созданного мной класса?

Какой код выполняется в GetHashCode для созданного мной класса?

Пришлите, пожалуйста, ссылку на исходный кодnet framework, где работает GetHashCode для объявленного мной класса

105
Записать данные в массив String

Записать данные в массив String

За один прогон с файла читается сразу 13 элементов (столбцов)

95