Подскажите плиз, как сделать новый List<MyObject>, основанный на имеющимся листе? List

<MyObject> mainObjects = new List<MyObject>();

List <MyObject> coneObjects = new List<MyObject>(mainObjects);

Беда в том, что в этом случае при изменении coneObjects.SomeParameter у меня меняется тот же самый параметр в mainObjects.SomeParameter

Нашел инфу:
- использование ICloneable
- сериализация

Но со всем этим у меня есть проблемы - нужно многое переписывать для того, чтобы это сработало. Может, есть какие-нибудь хитрости, чтобы избежать большого рефакторинга?

9 ответов

10 просмотров

Если я правильно понял, что тебе нужно скопировать список на ссылочном типе - тут желательно юзать ICloneable, это самый простой способ тут. Вообще, если углубиться глубже, что за объект у тебя в списке и почему возникла вообще такая потребность в копировании ссылочного типа? Может быть, возможно перевести его в структуру?

Виктор- Автор вопроса

У меня есть скрипт, в который я записываю все мои MyObject И есть второй скрипт, в который я хочу записать только часть имеющихся MyObject Т.е во втором скрипте что-то типа: "если условие такое, тебе нужен первый и пятый MyObject. Если условие другое - нужен третий, десятый и сотый MyObject" Т.е этот основной пул MyObject по задумке - что-то вроде посредника между потенциальной базой данных и теми объектами, которые их используют

Виктор- Автор вопроса
🐰 babaiko
Что находится в MyObject?

Куча всякого 😅 int, srting и прочее - с этим проблем нет (в плане копирования) Но ещё там есть List<OneMoreClassWithParameters> И в этом ещё одном объекте тоже сложная структура Такое чувство, что проще переписать такую сложную систему

Виктор
Куча всякого 😅 int, srting и прочее - с этим пробл...

Если бы там были только value types, ты бы мог просто преобразовать этот объект в структуру.

Виктор
Куча всякого 😅 int, srting и прочее - с этим пробл...

Ну вообще да, я не до конца понимаю, что у тебя за система, но попробовать ее пересмотреть/оптимизровать стоит))

Виктор- Автор вопроса

Угу 😅 Прост я пытаюсь сделать скиллы, которые умеют делать несколько эффектов (и бить, и лечить, и ещё хз что) И там получается сложное создание класса Skill newSkill = Skill(name, new Parameters(power: 2, duration: 4), new Parameters (power: 10, duration: 1)); Что-то в таком ключе Возможно, стоит прям сильно отделить создание скилла и создание его параметров

Виктор
Угу 😅 Прост я пытаюсь сделать скиллы, которые уме...

Окей, у тебя есть класс скилла с его параметрами, а что за список ещё в нём?

Виктор- Автор вопроса
🐰 babaiko
Окей, у тебя есть класс скилла с его параметрами, ...

Вложенный список - это List<Parameters>() params; При создании скилла у меня конструктор Skill (string name, params Parameters[] parameters); И вот эти параметры у меня идут в params. Но и это ещё не всё 😅 При создании Parameters у меня конструктор что-то типа Parameters (int power, int duration, params OneMoreClass[] oneMoreClass) В этом oneMoreClass что-то типа модификаторов к power и duration 😅😅 Возможно, стоит пойти с обратной стороны - сначала сделать эти модификаторы, затем параметры, затем скиллы И клонировать сначала модификаторы, затем параметры, затем скиллы Т.е сделать совсем модульную штуку Или вообще переделать все 😅

Похожие вопросы

Обсуждают сегодня

Подскажите, а есть vault lite или ченить такое?) А то нужен вольт для похода в вольт, но весит он ~500 мб) как-то многовато для парочки запросов ))
Alexandr Orloff
17
Всем привет, есть небольшая проблема Есть такой скрипт document.addEventListener('DOMContentLoaded', function () { const sliderTabs = document.querySelectorAll('.s...
A da
8
@go1337 @dblackCat Привет. Все ещё дрочусь с fastpanel. Добавил второй домен который должен смотреть в рут того же сайта, но так как это просто домен, а не сайт, я не могу ему...
Ross 🦴
9
До речі, в ево нема можливості чи якого розширення щоб з адмінки з телефона зайти і терміново щось в верстці поправити?
Женя
7
кто-нибудь пользуется тайм-трекерами во время работы? так много разных нагуглил, может есть что-то популярное
Lencore
8
Пацаны. Я разрабатываю софт для инвайтинга на телетон, и столкнулся с такой проблемой, в один из чатов не могу приглашать никого, не дает добавлять, в то же время через официа...
Kernel Panic
11
Скажите, а кому нужен Currency как отдельный плагин вместо полноценного ecommerce в OctoberCMS? Кто-то использует его уже или планирует в будущем? Может я что-то не понимаю?
Igor
13
Розмовами про Рево мені нагадали часи, коли шаблони правилися прямо в адмінці. Хто в курсі, чому відійшли від цієї практики, так блейд не працює? Доволі зручно ж було (інколи)
Женя
3
Всем добрый вечер, Рад оказаться в кругу единомышленников. Начинаю погружаться в мир .net веба. Зовут Ерасыл 🖖 У меня назрел вопрос: Какой процент проектов, прошедшие через в...
Ерасыл
6
Чому? Да тому що без GiT не уявляю нормального проекта а коли код в базі то то так собі
Dmytro Lukianenko
3
Карта сайта