동영상 강의/C# 언어 동영상 강의

[C# 동영상 강의] 11. Object

언제나휴일 2016. 4. 9. 13:37
반응형

[C# 동영상 강의] 11. Object




다루는 내용

object

object 클래스의 멤버


대본


슬라이드

참고 사이트: http://msdn.microsoft.com/ko-kr/library/system.object.aspx

이번 강의에서는 모든 형식의 기본 형식인 object에 대해서 살펴보기로 하겠습니다.

 

슬라이드 2

 Object .NET Framework의 모든 클래스 중에서 기본 클래스이며 형식 계층 구조의 루트입니다

Value 형식 또한 Object에서 파생되었습니다.

Object로부터의 파생은 암시적으로 이루어지므로 상속을 선언하지 않아도 암시적 상속됩니다.

모든 형식의 기본 클래스이기 때문에 Object 형식의 변수로 모든 형식의 개체를 사용 가능합니다

여러 형식을 보관하고 관리해야 하는 컬렉션을 디자인을 해야 한다면 Object클래스의 인스턴스를 보관하고 관리하는 구조로 하면 됩니다하지만 이전 강의에서도 얘기했듯이 value 형식과 object사이에서는 boxing unboxing 과정으로 성능 오버헤드가 생기기 때문에 성능을 해소하려면 제네릭 형식이나 메소드를 사용하도록 디자인을 하여야 되는 경우가 있습니다.

 


슬라이드

Object의 멤버에 대해서 살펴봅시다. 먼저 인스턴스 기본 생성자가 있습니다.

그리고, Run 타임 시에 해당 타입이 무엇인지를 인지하고 내부 멤버들을 확인할 수 있는 Type 형식을 반환하는 GetType메서드가 있습니다.

그리고, 형식의 정규화된 이름을 반환하는 ToString이 있는데 필요에 따라 재정의 할 수 있습니다.  Int형식의 경우 갖고 있는 값에 대한 문자열을 반환하게 되어 있는 것을 본 적이 있죠.

Equals는 서로 동인 한 지에 대한 Boolean을 반환하는데 값 형식과 string의 경우는 갖고 있는 값을 비교하고 string을 제외한 참조 형식의 경우는 동일한 개체 인스턴스를 참조하는지에 대한 여부를 반환합니다물론, 목적에 따라 재정의가 가능합니다.

그리고, 해쉬 테이블 같은 데이터 구조나 해쉬 알고리즘에 적합한 해쉬 코드를 반환하는 GetHashCode메서드가 있는데 반환하는 해쉬 코드 값은 유일성을 보장하지 않습니다해쉬 코드 값이 동일할 확률이 낮기 때문에 이를 개체 구분자로 사용하시는 경우가 종종 있는데 이는 적절한 사용이 될 수 없습니다.

그리고, protected로 보호된 Finalize()메서드를 제공하는데 이는 가비지 수집기에서 개체 인스턴스를 회수하기 전에 정리 작업을 하기 위함입니다비관리 코드와 혼용하여 사용할 경우 자원 해제 등을 해야 할 필요성이 있을 때와 같은 경우에 사용하실 수 있습니다.

그리고, static한 메서드로 두 개의 object를 입력 매개 변수로 받는 Equals 메서드가 있어 인스턴스의 멤버 Equlas와 동일한 역할을 합니다그리고, 참조가 동일한지를 확인하는 static한 메서드로 ReferenceEquals를 제공합니다인스턴스의 멤버 Equals를 재정의하지 않을 경우 string을 제외한 참조 형식의 경우에 Equals와 동일한 역할을 하지만 값 형식의 경우에는 다르겠죠.


개발도구를 통해 object에 대해 좀 더 살펴보기로 합시다.  


실습




  앞으로 프로그래밍 관련 글은 새롭게 개설한 언제나 휴일 전용 사이트에서 만나보세요. 

2017년 1월 1일까지 이 곳의 프로그래밍 자료는 http://ehpub.co.kr 로 옮길 예정입니다.
 

반응형