Изменение объекта передаваемого в качестве параметра - 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);
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.846 из 5
Похожие ответы