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