Изменение объекта передаваемого в качестве параметра - 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); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д