Изменение объекта передаваемого в качестве параметра - C#
Формулировка задачи:
Я создал класс Steps
и когда я передаю экземпляр этого класса в функцию, которая его меняет меняет и записываю изменённую версию в новую переменную, оригинальная переменная так же меняется. Более того, похоже, она меняется, как только я её изменяю внутри функции. А ведь в функцию я по идее передаю копию и оригинал не должен затрагиваться вообще.
Что здесь не так?
Листинг программы
- class Steps : ICloneable
- {
- public int[] sequence { get; set; }
- public ArrayList madeSteps { get; set; }
- public int minCheck { get; set; }
- public int maxCheck { get; set; }
- public Steps(int[] items, int max, ArrayList steps, int min = 1)
- {
- sequence = items;
- madeSteps = steps;
- minCheck = min;
- maxCheck = max;
- }
- object ICloneable.Clone()
- {
- return this.Clone();
- }
- public Steps Clone()
- {
- return (Steps)this.MemberwiseClone();
- }
- }
Листинг программы
- int[] numbers = { 1, 2, 4, 3};
- Steps steps = new Steps(numbers, numbers.Length, new ArrayList(), 0);
- Steps ste = Tmp(steps);
Решение задачи: «Изменение объекта передаваемого в качестве параметра»
textual
Листинг программы
- object ICloneable.Clone()
- {
- return this.Clone();
- }
- public Steps Clone()
- {
- return (Steps)new Steps((int[])this.sequence.Clone(), this.maxCheck, (ArrayList)this.madeSteps.Clone(), this.minCheck);
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д