[c#] 클래스의 복사와 참조

C#에서 클래스를 다루다 보면 클래스의 복사와 참조에 대해 이해할 필요가 있습니다. 객체를 복사하거나 참조하는 방법에 대해 알아보겠습니다.

복사 vs. 참조

복사(Copy)는 객체를 새로운 인스턴스에 복제하는 것을 말하며, 기존 객체와는 독립적으로 존재합니다. 반면에 참조(Reference)는 객체를 가리키는 주소를 복제하여, 동일한 객체를 가리키는 새로운 참조를 만드는 것을 의미합니다.

얕은 복사 vs. 깊은 복사

C#에서 객체를 복사할 때는 얕은 복사(Shallow Copy)깊은 복사(Deep Copy)로 나뉩니다.

예제 코드

아래는 얕은 복사와 깊은 복사를 구현한 예제 코드입니다.

얕은 복사

class Person
{
    public string Name { get; set; }
    public Address Address { get; set; }

    public Person ShallowCopy()
    {
        return (Person)this.MemberwiseClone();
    }
}

깊은 복사

class Person
{
    public string Name { get; set; }
    public Address Address { get; set; }

    public Person DeepCopy()
    {
        Person copy = (Person)this.MemberwiseClone();
        copy.Address = new Address(Address.Street, Address.City); // Address 클래스의 복사 로직 구현 필요
        return copy;
    }
}

결론

클래스의 복사와 참조에 대한 이해는 객체 지향 프로그래밍에서 매우 중요합니다. 적절한 방법을 선택하여 메모리 사용을 최적화하고 예기치 않은 동작을 방지할 수 있습니다.

더 많은 정보는 Microsoft Docs를 참고하세요.

이상으로 C# 클래스의 복사와 참조에 대한 내용을 알아보았습니다.


Keywords: C#, 클래스, 복사, 참조, 얕은 복사, 깊은 복사

참고 문헌:

  1. https://docs.microsoft.com/