CS/C# & Unity

[C#]박싱 언박싱

혀니리리 2023. 9. 27. 19:10
728x90

[c#] 박싱(boxing), 언박싱(unboxing) 개념과 사용 이유 (tistory.com)

 

[c#] 박싱(boxing), 언박싱(unboxing) 개념과 사용 이유

기존에 타입을 변환하는것을 형변환(type casting)이라고 했었습니다. (형변환은 관련 포스팅 참조 바랍니다.) 박싱과, 언박싱도 형변환을 하는것이지만 조금 결이 다른데요. 1. 박싱과 언박싱이란?

yeko90.tistory.com

형변환과 비슷하지만 다른 개념

박싱(boxing) : 값 형식을 참조 형식(Object타입)으로 변환

언박싱(unboxing): 박싱했던 값을 다시 원상태로 복귀

명시적으로 적어주면서 언박싱해야함

 

왜 사용?

배열에 다양한 타입으로 넣고 싶어서

 

단점: 메모리상 비효율

1.값형 -> 참조형으로 바뀔 때, 스택에 있는 값을 복사하여 힙에 할당시키게 되고 언박싱 시 다시 스택에 가져오는 작업을 하면서 힙에 가비지가 쌓이게 됨

2.단순히 힙에 넣는 작업에 비해 '박싱'을 통할 시 20배 정도 많은 시간이 소요, 언박싱 시 4배 정도의 시간 소요됨

 

극복 방법: Generic 클래스로 형변환

728x90

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

직렬화와 역직렬화  (1) 2023.12.12
스태틱 게임오브젝트와 배칭  (0) 2023.10.01
드로우콜과 배치  (0) 2023.10.01
[Unity]코루틴과 스레드의 차이  (0) 2023.09.23
유니티 생명주기  (0) 2023.08.21