.NET Framework에서 Object가 어떻게 상속되나요?

안녕하세요.

닷넷프레임워크에서 모든 객체들이 어떤 방식으로 Object를 상속받게 되었는지 궁금합니다.

예전부터 막연하게 알고만 있었는데요. 요즘에는 WPF 객체를 설계하고 연구하는 과정에서 Equals, ToString, GetType같은 Virtual 메서드를 다양하게 Override해서 활용해보고 있습니다.

그러면서 자연스럽게 Object에 관심이 가게 되었는데요.

다른 클래스와는 다르게 어떻게 눈에 보이는 상속과정이 생략되었는지, 그리고 object에 대한 다양한 시각과 새로운 것들을 배우고, 이해하고 싶어 질문을 드리게 되었습니다.

감사합니다. :smile:

1개의 좋아요

모든 객체라 하시면 닷넷 API가 상당히 많아서 나열이 어렵지 않을까요?

대신 MSDN 에서 원하시는 클래스 정의를 보시면 상속과정이 나와있으니 참고하시면 될거같습니다.

더불어 .NET Framework는 4.8 reference source가 공개되어있으니 찾아보시면 될 듯 합니다.

1개의 좋아요

CLR via C#이라는 책에 궁금해하시는 내용을 다루는 자세한 부분들이 많습니다. 결국 Object를 어떻게 상속하고, 메모리 관리는 어떻게 하는지에 대한 구체적인 내용은 .NET 런타임에 대한 이해를 하는 것과 연결되는 주제라서요.

CLR via C# (Developer Reference): Richter, Jeffrey: 9780735667457: Amazon.com: Books

한국어 번역판을 원하신다면 아래 링크도 있습니다. (제가 이전에 한국 마이크로소프트 김명신 이사님과 같이 번역에 참여했던 책입니다.)

제프리 리처의 CLR via C#(4판) - 교보문고 (kyobobook.co.kr)

3개의 좋아요

그리고 재미있는 사실을 하나 더 알려드리면, Object 클래스는 사실 런타임 요소라기보다 라이브러리 요소입니다. 그래서 C#과 MSIL을 사용하지만, 닷넷 런타임의 Object 클래스를 상속받지 않는 독자적인 타입 정의도 기술적으로는 가능하고, 이런 특성을 이용하는 특수한 C# 프로그래밍을 시도하는 경우도 있습니다.

예를 들어보면…

zerosharp/README.md at master · MichalStrehovsky/zerosharp (github.com)

가령 이 프로젝트의 동작 원리는 /nostdlib 컴파일러 스위치가 핵심입니다.

2개의 좋아요

@rkttu 책 가지고 있습니다! 말씀해주신 부분 꼼꼼히 읽어보겠습니다. :smile:

@Vincent 좋은 정보 감사합니다. :smile:

GitHub 뿐만 아니라 실시간으로도 소스코드를 검색할 수 있게 잘 되어있네요.
앞으로 유용하게 사용할 수 있을 것 같습니다!!

감사합니다.

(알려주신 곳은 혹시 찾으시는분을 위해 남겨놓습니다.)

사이트 설명 링크
GitHub .NET Framework 소스코드 제공 여기
Microsoft .NET References Source 실시간 검색 여기
1개의 좋아요

@rkttu 감사합니다. :smile:

(메모)