C# 프로그래밍 기초 실습 전자책

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


퀴즈 질문


예상답변/설명

Value Type의 로컬 변수 혹은 파라미터는 해당 타입의 값을 스택에 가지게 된다. Reference Type은 Managed Heap상에 Type 객체(Object)를 생성하고 이 객체에 대한 레퍼런스만을 스택에 갖고 있게 된다. (물론 Reference 객체가 다른 Reference Type의 객체를 갖고 있는 경우, Heap상의 Reference 객체가 다른 Reference 객체의 레퍼런스를 가지고 있게 된다. 마찬 가지로 Reference객체가 Value Type 멤버를 가지고 있는 경우 그 멤버를 Heap에 가지게 된다) C# 코드에서 Value Type과 Reference Type사이의 변환을 하게 되면, 박싱/언박싱이 일어나게 되고, 상당한 양의 박싱/언박싱이 일어나면 성능에 영향을 미칠 수 있다.

[추가질문] Value Type에 NULL을 할당할 수 있는가?
[A] 할당할 수 없다. Reference Type만 NULL을 할당할 수 있다.

[추가질문] struct는 Value Type인가?
[A] 예

[추가질문] struct로부터 상속(inheritance)을 할수 있는가?
[A] 아니오. Value 타입은 다른 타입의 Base가 될 수 없다. 따라서 항상 암묵적으로 Sealed이며, System.ValueType으로부터 상속된다.

[추가질문] struct는 Interface를 구현할수 있는가?
[A] 예