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