<MyObject> mainObjects = new List<MyObject>();
List <MyObject> coneObjects = new List<MyObject>(mainObjects);
Беда в том, что в этом случае при изменении coneObjects.SomeParameter у меня меняется тот же самый параметр в mainObjects.SomeParameter
Нашел инфу:
- использование ICloneable
- сериализация
Но со всем этим у меня есть проблемы - нужно многое переписывать для того, чтобы это сработало. Может, есть какие-нибудь хитрости, чтобы избежать большого рефакторинга?
Если я правильно понял, что тебе нужно скопировать список на ссылочном типе - тут желательно юзать ICloneable, это самый простой способ тут. Вообще, если углубиться глубже, что за объект у тебя в списке и почему возникла вообще такая потребность в копировании ссылочного типа? Может быть, возможно перевести его в структуру?
У меня есть скрипт, в который я записываю все мои MyObject И есть второй скрипт, в который я хочу записать только часть имеющихся MyObject Т.е во втором скрипте что-то типа: "если условие такое, тебе нужен первый и пятый MyObject. Если условие другое - нужен третий, десятый и сотый MyObject" Т.е этот основной пул MyObject по задумке - что-то вроде посредника между потенциальной базой данных и теми объектами, которые их используют
Что находится в MyObject?
Куча всякого 😅 int, srting и прочее - с этим проблем нет (в плане копирования) Но ещё там есть List<OneMoreClassWithParameters> И в этом ещё одном объекте тоже сложная структура Такое чувство, что проще переписать такую сложную систему
Если бы там были только value types, ты бы мог просто преобразовать этот объект в структуру.
Ну вообще да, я не до конца понимаю, что у тебя за система, но попробовать ее пересмотреть/оптимизровать стоит))
Угу 😅 Прост я пытаюсь сделать скиллы, которые умеют делать несколько эффектов (и бить, и лечить, и ещё хз что) И там получается сложное создание класса Skill newSkill = Skill(name, new Parameters(power: 2, duration: 4), new Parameters (power: 10, duration: 1)); Что-то в таком ключе Возможно, стоит прям сильно отделить создание скилла и создание его параметров
Окей, у тебя есть класс скилла с его параметрами, а что за список ещё в нём?
Вложенный список - это List<Parameters>() params; При создании скилла у меня конструктор Skill (string name, params Parameters[] parameters); И вот эти параметры у меня идут в params. Но и это ещё не всё 😅 При создании Parameters у меня конструктор что-то типа Parameters (int power, int duration, params OneMoreClass[] oneMoreClass) В этом oneMoreClass что-то типа модификаторов к power и duration 😅😅 Возможно, стоит пойти с обратной стороны - сначала сделать эти модификаторы, затем параметры, затем скиллы И клонировать сначала модификаторы, затем параметры, затем скиллы Т.е сделать совсем модульную штуку Или вообще переделать все 😅
Обсуждают сегодня