C# Boxing, UnBoxing, UpCasting, DownCasting 간단 설명 질문

2023. 12. 27. 17:59·- 개발/C# 개발정리
반응형

 

면접이든 아니든 항상 단골 질문 중 하나인 Boxing, UnBoxing, UpCasting, DownCasting.

 

오늘은 4가지에 대해 아주 가볍고 가볍고 너~무 가볍게 설명하고자 해요!

 

사실 어려운 개념은 아니라서 한번만 짚고 넘어가면 괜찮으실거에요!

 

자 그럼 가볍게 가볼까요?

 

Upcasting·Downcasting

상향 형변환이라고 하며 여기서 Casting은 해당 타입을 변환이라고 아시면 되요.

 

 

그렇다면 Downcasting은 하향 형변환으로 상향 형변환과 반대겠죠?

 

 

아래 소스로 예를 들어보자면

// 인터페이스 부모, 클래스 자식

interface 부모
{
	void Execute();
}

class 자식 : 부모
{
	protected void Execute()
    {
		// Do...
    }
}

위와 같이 정의되어 있다고 했을 때

부모 -> 자식 형변환 시 하향 형변환

자식 -> 부모 형변환 시 하향 형변환

 

// Upcasting
부모 Parent = new 자식();   
// Downcasting
자식 Child = new 부모();

Boxing ·UnBoxing

가볍게 보면 Object Type은 타입의 최상단 루트이며

Stack 영역의 메모리의 값을 Heap 영역 메모리로 할당해주는것을 Boxing

Heap 영역의 메모리의 값을 Stack 영역 메모리로 할당해주는것을 UnBoxing이라고 합니다.

 

이것도 예로 들어볼까요?

// Boxing
object obj = (object)123; 
// UnBoxing
int num = (int)obj;

 

여기서 좀 더 나아가면 

 

C#에서

Value Type은 Struct로 정의되고

Reference Type은 class로 정의됩니다.

 

그래서 int는 struct 구조체로서 상속받을 수 없습니다.

그렇지만 오류없이 사용이 가능한 이유는 모든 값 형식은 Value Type을 상속받을 수 있습니다.

Value Type > 모든 값 형식

즉, 이 말은 System.Object는 System.ValueType을 상속받고 있기 때문에 가능한 것입니다!

 

 

 

 

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'- 개발 > C# 개발정리' 카테고리의 다른 글

[C#] Parallel 사용 방법 /예제/정의/추가적인작업  (0) 2023.12.26
[C# Async/await/Invoke/beginInvoke/크로스스레딩] 비동기 처리 방법 /예제소스  (1) 2023.12.26
'- 개발/C# 개발정리' 카테고리의 다른 글
  • [C#] Parallel 사용 방법 /예제/정의/추가적인작업
  • [C# Async/await/Invoke/beginInvoke/크로스스레딩] 비동기 처리 방법 /예제소스
고미-
고미-
개발자의 블로그
    반응형
  • 고미-
    곰이네 Blog
    고미-
  • 전체
    오늘
    어제
    • 분류 전체보기 (51)
      • - 일상후기 (20)
        • IT (2)
        • 맛집 (9)
        • 애기들 (2)
      • - 개발 (8)
        • C# 개발정리 (3)
        • C# WPF (1)
        • Github (1)
        • Python (1)
      • - 자기개발 (1)
      • - 기타 (7)
  • 블로그 메뉴

    • 홈
    • > github
  • 링크

  • 공지사항

    • 바쁜 일상 속 잠깐 클릭해주세요!
  • 인기 글

  • 태그

    삼국지
    향동
    주차
    추천
    이벤트
    가성비
    말티즈
    무료
    애기
    모바일
    디저트
    맛집
    카페
    커플
    솔직후기
    게임
    고양
    선물
    생일
    빵구독
    블로그
    삼국지책략전
    C#
    울산
    내돈내산
    프로그램
    꽃
    카카오톡
    애드센스
    귀여움
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
고미-
C# Boxing, UnBoxing, UpCasting, DownCasting 간단 설명 질문
상단으로

티스토리툴바