Unity C#

Collections, Boxing, UnBoxing 정리

Ms_Tony 2018. 7. 28. 16:35

C# 언어 내부에서 제공하는 Collection(Stack, Queue, ArrayList, HashTable)에 데이터의 입, 출력이 있으면 그때마다 박싱과 언박싱이 계속해서 발생하게 되고, 데이터가 많아질수록 컴퓨터 성능에 상당한 부하가 발생하게 된다.

  • 부하가 발생하는 원인 : 컬렉션은 데이터의 어떤 타입도 전부 object 타입으로 저장하기 때문에, 데이터에 접근할 때마다 본래 타입으로의 형식변환이 일어나기 때문이다. => Boxing과 UnBoxing.

  • 성능 상의 이슈가 문제가 된다면, 컬렉션보단 일반화 컬렉션(Generic Collection)을 사용하기로 한다.


일반화 컬렉션

  • 종류 : List, Queue, Stack, Dictionary

  • ArrayList, Queue, Stack, HashTable의 일반화 버전

  • using System.Collection.Generic; 네임스페이스 안에 존재하기 때문에 사용 선언 필수.


Boxing

  • 값(Value) 형식을 Object형식 또는 이 값 형식에서 구현된 임의의 인터페이스 형식으로 변환하는 프로세스.

  • 값 형식을 참조 형식으로 바꾸는 것.

  • 메모리의 Stack 영역에서 Heap 영역으로 데이터가 복사되고, 그 복사된 데이터를 object가 참조하게 한다.(값 형식 -> 참조 형식)

  • 암시적이다.




UnBoxing

  • Boxing된 데이터를 Heap 영역에서 Stack영역으로 복사한다.(참조 형식 -> 값 형식)

  • 명시적이다.





참고 : https://docs.microsoft.com/ko-kr/dotnet/csharp/programming-guide/types/boxing-and-unboxing

'Unity C#' 카테고리의 다른 글

Unity3d Canvas Object에 대해서  (0) 2018.08.04
C# Delegate에 대한 정리  (0) 2018.07.30
Unity Quaternion에 대한 정리  (0) 2018.07.23
Photon Server에 대한 기본 정리  (0) 2018.07.18
Unity Collider Component 정리  (0) 2018.07.18