C#

C# / .NET 알고리즘과 퀴즈
본 알고리즘 퀴즈 문제는 C#/.NET 개발자를 위한 알고리즘 인터뷰 혹은 C# 프로그래밍을 통한
문제 해결 알고리즘을 연구해 보는데 도움이 되고자 작성되었습니다.


퀴즈 질문


예상답변/설명

Value Type은 int, char 등의 기초 데이타(Primitive data)를 저장하는 타입으로 그 값이 Stack에 저장된다. (주:struct 타입은 Value Type이다) Reference Type은 Managed Heap에 객체를 생성하고 이 참조값을 스택 혹은 Heap에 갖는다. Reference Type인 클래스가 객체를 Heap에 만들 때, 클래스 멤버로 Value Type을 갖는 경우, 이는 Heap에 생성된다.

Value Type의 값을 캐스팅을 통해 Reference Type으로 변경할 경우, Reference Type의 객체는 새 객체를 Managed Heap에 만들고, 스택의 값을 Heap에 복사하는데, 이를 Boxing이라 한다.

Boxing의 예

int val = 100;
object obj1 = (object)val;

반대로 박싱된 값을 Heap에서 Stack으로 Value Type으로 복원하는 과정은 Unboxing이라고 한다.

Unboxing의 예

int v = (int)obj1;

박싱/언박싱을 대량의 데이타 구조에서 자주 발생시키면, 성능을 크게 저하시키는 요인이 된다.