객체: 얕은 복사, 깊은 복사

Fruit·2023년 3월 28일

✨ Hello C#!

목록 보기
24/34
post-thumbnail

🌸 얕은 복사

  • 참조만 복사한다.
using System;

namespace ShallowCopy
{
    class MyClass
    {
        public int MyField1;
        public int MyField2;
    }

    class MainApp
    {
        static void Main(string[] args)
        {
            MyClass source = new MyClass();
            source.MyField1 = 10;
            source.MyField2 = 20;

            MyClass target = source;
            target.MyField2 = 30;

            Console.WriteLine($"source: {source.MyField1} {source.MyField2}");
            Console.WriteLine($"target: {target.MyField1} {target.MyField2}");
        }
    }
}

[실행 결과]
source: 10 30
target: 10 30



🌸 깊은 복사

  • 복사할 객체를 별도의 힙에 할당한다.
using System;

namespace DeepCopy
{
    class MyClass
    {
        public int MyField1;
        public int MyField2;

        public MyClass DeepCopy()
        {
            MyClass newCopy = new MyClass();
            newCopy.MyField1 = this.MyField1;
            newCopy.MyField2 = this.MyField2;

            return newCopy;
        }
    }

    class MainApp
    {
        static void Main(string[] args)
        {
            MyClass source = new MyClass();
            source.MyField1 = 10;
            source.MyField2 = 20;

            MyClass target = source.DeepCopy();
            target.MyField2 = 30;

            Console.WriteLine($"source: {source.MyField1} {source.MyField2}");
            Console.WriteLine($"target: {target.MyField1} {target.MyField2}");
        }
    }
}

[실행 결과]
source: 10 20
target: 10 30

▪ 참고: Hello Fruit! - this

▪ 사진 출처: DevStory

profile
🌼인생 참 🌻꽃🌻 같다🌼

0개의 댓글