Изменение объекта передаваемого в качестве параметра - C#

Узнай цену своей работы

Формулировка задачи:

Я создал класс Steps
Листинг программы
  1. class Steps : ICloneable
  2. {
  3. public int[] sequence { get; set; }
  4. public ArrayList madeSteps { get; set; }
  5. public int minCheck { get; set; }
  6. public int maxCheck { get; set; }
  7. public Steps(int[] items, int max, ArrayList steps, int min = 1)
  8. {
  9. sequence = items;
  10. madeSteps = steps;
  11. minCheck = min;
  12. maxCheck = max;
  13. }
  14. object ICloneable.Clone()
  15. {
  16. return this.Clone();
  17. }
  18. public Steps Clone()
  19. {
  20. return (Steps)this.MemberwiseClone();
  21. }
  22. }
и когда я передаю экземпляр этого класса в функцию, которая его меняет меняет и записываю изменённую версию в новую переменную, оригинальная переменная так же меняется. Более того, похоже, она меняется, как только я её изменяю внутри функции. А ведь в функцию я по идее передаю копию и оригинал не должен затрагиваться вообще.
Листинг программы
  1. int[] numbers = { 1, 2, 4, 3};
  2. Steps steps = new Steps(numbers, numbers.Length, new ArrayList(), 0);
  3. Steps ste = Tmp(steps);
Что здесь не так?

Решение задачи: «Изменение объекта передаваемого в качестве параметра»

textual
Листинг программы
  1.         object ICloneable.Clone()
  2.         {
  3.             return this.Clone();
  4.         }
  5.         public Steps Clone()
  6.         {
  7.             return (Steps)new Steps((int[])this.sequence.Clone(), this.maxCheck, (ArrayList)this.madeSteps.Clone(), this.minCheck);
  8.         }

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


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

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

13   голосов , оценка 3.846 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы