[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#, 클래스, 복사, 참조, 얕은 복사, 깊은 복사
참고 문헌:
- https://docs.microsoft.com/