안녕하세요 삽잡이입니다.
이번시간은 지난 시간에 이어 object class 내에 있는 메서드들에 대해 알아보려고합니다.
다음은 object 클래스에서 제공해주는 멤버(Instance) 메서드들입니다.
Object 클래스에서 제공해주는 인스턴스 멤버에는
GetType()메서드와 MemberwiseClone() 메서드가 있습니다.
우선, GetType() 메서드는
자기 객체의 타입을 정말 잘 알고 있는 '타입 객체'를 반환합니다.
MemberwiseClone() 메서드는 '복사' 동작을 할 때에 중요해집니다.
참조를 복사하는 경우를 봅시다.
객체가 아닌 참조가 복사되는 경우입니다.
만약, 복사된 객체를 가리키고 싶다면 어떻게 해야할까요?
이 때에는 MemberwiseClone() 메서드를 사용하면 됩니다.
단, 해당 메서드는 proteced 접근 권한을 가지고 있어서 외부에서 사용할 수 없습니다.
그래서 우리는 일반적으로 이처럼 메스드를 구현할 수 있습니다.
즉, 내 객체와 똑같은 객체를 반환하라는 뜻입니다.
그러면, this는 pt1이고,
똑같은 객체를 MemberwiseClone() 메서드를 통해 만들어내고
pt2가 가지게 되는 것입니다.
왜 그런데 함수명이 MemberwiseClone 일까요.. 그냥 Clone으로 할 것이지...
MemberwiseClone() 메서드는 참조를 가지고 있지 않는 내 멤버를 복사하고자할 때 사용합니다.
즉, 멤버가 참조를 가지고 있지 않을 때에만 사용이 가능하다 이겁니다.
해당 메서드를 통해 똑같은 객체를 만들어내고 proteced 접근권한을 가지고 있어서
외부에서 접근을 할 수 없지요....
따라서, 자신의 클래스 혹은 자식 클래스에서만 사용이 가능합니다.
MemberwiseClone() 메서드는 Shallow Copy.. 즉, 얕은 복사를 합니다.
따라서, 만약 값이 아닌 참조를 가지고 있는 경우에는 같은 참조를 하게 되는 꼴이 됩니다.
이번 시간은 여기까지 하도록 하겠습니다.
이상 삽잡이였습니다!
<참고 : C# and the .NET4 Platform>
'삽질의 현장 > - .NET' 카테고리의 다른 글
[삽잡이::C#]문자열 (0) | 2015.10.29 |
---|---|
#037_닷넷(.NET)_.Net Framework 기본 -Object 메서드 (static) (0) | 2015.10.29 |
#035_닷넷(.NET)_.Net Framework 기본 -Object 메서드 (virtual) (0) | 2015.10.28 |
#034_닷넷(.NET)_.Net Framework 기본 - 상속 구조를 끊는 new 키워드 (0) | 2015.10.27 |
[삽잡이::C#] base & this (0) | 2015.10.27 |