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

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

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

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

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

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

9 ответов

12 просмотров

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

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

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

Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
12
Я правильно понимаю что нет способов получить список ожидающих заявок на вступление в группу с помощью бота из mtproto?
Шамиль Прилов
9
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
🙋 Ребята, всем привет. Поправил задачу: Нужно каждому новому сообщению (1 раз по каждому юзеру) в чате прибавлять снизу кнопку с предложением подписаться на канал. Как добавит...
Alexander
1
Вопрос: Здравствуйте! У меня возникла проблема с использованием плагина Mall в OctoberCMS. Я использую все файлы и компоненты в их исходном виде, без изменений. Однако на стр...
𐩱𐩪𐩣𐩱𐩲𐩺𐩡
2
Добрый день. Мне посоветовали обратиться к вам в чат за помощью. Ситуация описана на скрине. Как мне сказали, мне на бота навесили флудвейт. Есть ли возможность снять его ра...
OVERLINK
7
всем привет помогите пожалуйста используя CDN (GCP) у игроков из вьетнама загружается конфиг (размер 999 bytes) загружается 5 и более минут н а других CDN сервисах такой пробл...
Andrew Krw.
1
Просто по очереди выпиливаешь на ручной маппинг? По методу за раз
Andrii Kurdiumov
7
Приветствую. А не подскажете какие ограничения есть на использования api метода setMyName ? Несколько раз сменил имя бота и получил бан на 2 месяца на смену имени.
Slick Slack
8
Привет, коллеги! Возникла задача ограничить максимальный размер вложений для определённых расширений, например, чтобы для изображений лимит был 10 МБ, а для видео — 100 МБ. Ог...
Andro
1
Карта сайта