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

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

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

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

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

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

9 ответов

16 просмотров

Если я правильно понял, что тебе нужно скопировать список на ссылочном типе - тут желательно юзать 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 😅😅 Возможно, стоит пойти с обратной стороны - сначала сделать эти модификаторы, затем параметры, затем скиллы И клонировать сначала модификаторы, затем параметры, затем скиллы Т.е сделать совсем модульную штуку Или вообще переделать все 😅

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

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

Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Объясните, пожалуйста, почему компилятор ругается на использование в условии неинициализированной переменной: int x; Task.Run(async () => { x = await somefunc(); }).Wait...
Александр
5
Ребят, подскажите, пожалуйста, почему в префиксе к ассетам, которые генерируются через фильтр | theme в шаблоне, стал вдруг появляться index.php? Вот так выглядит ссылка на а...
Виталий
1
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Коллеги, может знает кто, можно ли цвет бейджа счётчика в BackendMenu менять без бубнов?
Alex Blaze
3
Карта сайта