.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;
        }
    }
}

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


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

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

12   голосов , оценка 3.917 из 5