.NET 4.x Сделать копию класса - C#
Формулировка задачи:
Есть Class_test a и есть Class_test b
Как сделать копию a и положить ее в b, НО чтобы я дальше мог работать с b, при этом чтобы a не изменялось никак, тоесть нужно не ссылки копировать а полностью.
a=b; не катит.
Желатьльно пример с маломальским рабочим кодом.
Решение задачи: «.NET 4.x Сделать копию класса»
textual
Листинг программы
using System;
namespace CopyData
{
class Program
{
static void Main(string[] args)
{
Data d1 = new Data(10, new SubData(20, 30));
Data d2 = new Data(d1);
d2.X = 101;
d2.subData.F1 = 111;
d2.subData.F2 = 222;
Console.WriteLine(d1);
Console.WriteLine(d2);
Console.ReadKey();
}
}
class Data
{
public int X { set; get; }
public SubData subData { set; get; }
public Data(int x, SubData subData)
{
X = x;
this.subData = subData;
}
public Data(Data data) // конструктор копирования
{
X = data.X;
subData = new SubData(data.subData);
}
public override string ToString()
{
return string.Format("{0} {1} {2}", X, subData.F1, subData.F2);
}
}
class SubData
{
public int F1 { set; get; }
public int F2 { set; get; }
public SubData(int f1, int f2)
{
F1 = f1;
F2 = f2;
}
public SubData(SubData subData) //конструктор копирования
{
F1 = subData.F1;
F2 = subData.F2;
}
}
}