Классы и присвоение в C#

alexandr.krupnov
Сообщений: 31
Зарегистрирован: 01 апр 2014, 21:00

Классы и присвоение в C#

Сообщение alexandr.krupnov » 16 июн 2015, 08:10

Здравствуйте! Проблема в следующем:
Есть класс А
Создал экземпляр А1 и присвоил значения структуре.
Далее создаю экземпляр А2 и присваиваю ему значение А1 (А2 = А1)
Если меняю содержимое А1, меняется и А2 и наоборот. А этого не должно происходить. Вопрос "Как присвоить А2 значение А1 и избежать данной проблемы"
Последний раз редактировалось alexandr.krupnov 27 ноя 2019, 19:41, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
A.I.
Сообщений: 2061
Зарегистрирован: 06 сен 2006, 21:00

Классы и присвоение в C#

Сообщение A.I. » 16 июн 2015, 10:03

Листинг в студию. 
Последний раз редактировалось A.I. 27 ноя 2019, 19:41, всего редактировалось 1 раз.
Причина: test

alexandr.krupnov
Сообщений: 31
Зарегистрирован: 01 апр 2014, 21:00

Классы и присвоение в C#

Сообщение alexandr.krupnov » 16 июн 2015, 10:35

            ConfTestParam copyParam = new ConfTestParam();
            ConfTestResult copyResult = new ConfTestResult();
            copyParam = confTests.Param[p];
            copyResult = confTests.Result[p];
            confTests.AddParam(copyParam);
            confTests.AddResult(copyResult);
Последний раз редактировалось alexandr.krupnov 27 ноя 2019, 19:41, всего редактировалось 1 раз.
Причина: test

alexandr.krupnov
Сообщений: 31
Зарегистрирован: 01 апр 2014, 21:00

Классы и присвоение в C#

Сообщение alexandr.krupnov » 16 июн 2015, 10:38

где confTests.Param[p] и confTests.Result[p] - экземпляры соответственно классов ConfTestParam и ConfTestResult с индексом p.
метод confTests.AddParam(copyParam) и confTests.AddResult(copyResult) добавляют соответственно copyParam и copyResult в массив. При этом размерность масивов увеличивается на 1.
Последний раз редактировалось alexandr.krupnov 27 ноя 2019, 19:41, всего редактировалось 1 раз.
Причина: test

12d3
Сообщений: 3347
Зарегистрирован: 02 янв 2009, 21:00

Классы и присвоение в C#

Сообщение 12d3 » 16 июн 2015, 14:10

alexandr.krupnov писал(а):Source of the post Вопрос "Как присвоить А2 значение А1 и избежать данной проблемы"
https://msdn.microsoft.com/ru-ru/library/ms173116.aspx
Последний раз редактировалось 12d3 27 ноя 2019, 19:41, всего редактировалось 1 раз.
Причина: test

alexandr.krupnov
Сообщений: 31
Зарегистрирован: 01 апр 2014, 21:00

Классы и присвоение в C#

Сообщение alexandr.krupnov » 17 июн 2015, 13:13

Как я понял, необходимо применить операцию глубокого копирования (c#)
Подскажите ссылку на доступный пример
Последний раз редактировалось alexandr.krupnov 27 ноя 2019, 19:41, всего редактировалось 1 раз.
Причина: test

alexandr.krupnov
Сообщений: 31
Зарегистрирован: 01 апр 2014, 21:00

Классы и присвоение в C#

Сообщение alexandr.krupnov » 17 июн 2015, 13:34

Я понял, что необходимо написать конструктор копирования
Верно ли я написал?
public class Test
{
public Test
{
}
 
public Test(Test local) //конструктор копирования
{
x = local.x;
y = local.y;
}
int x;
int y;
}
Последний раз редактировалось alexandr.krupnov 27 ноя 2019, 19:41, всего редактировалось 1 раз.
Причина: test


Вернуться в «Computer Science»

Кто сейчас на форуме

Количество пользователей, которые сейчас просматривают этот форум: нет зарегистрированных пользователей и 1 гость