var나 T(제네릭)을 사용하는 이유를 명확하게 몰랐는데 boxing과 unboxing 등 메모리의 구조에 대해 공부하며 조금이나마 깨달았다.
초기의 var는 값형만 받을 수 있기 때문에 class를 받을 수 없었고 참조타입을 받을 수 있도록 object가 등장하며 모든 타입을 받을 수 있게 되었다. var는 값을 초기화 한 후 값이 지정되며 제네릭은 값을 지정하기 때문에 boxing과 unboxing이 일어나지 않는다. object는 참조 타입으로 boxing과 unboxing이 일어나기 때문에 가비지 컬렉션의 대상이 될 수 있다.
먼저 boxing과 unboxing은 값 형식과 참조 형식을 서로 변환해 주는 것이다.
박싱된 객체는 힙 영역에 할당되어 가비지 컬렉션의 대상이 될 수 있어 메모리 효율로 인해 성능 저하가 올 수 있다. boxing과 unboxing는 System.Collections.ArrayList, param object[], Debug.Log 등에 사용되는데 이때 아무 자료형이나 올 수 있는 var 키워드나 Generic 사용으로 boxing이 일어나지 않게 할 수 있다.
그러나 코딩을 할 때 가독성 등의 이유로 자료형을 명확히 표기해야 하기 때문에 var와 제네릭을 무조건 사용하는 것은 지양해야 한다. var와 제네릭, boxing과 unboxing 모두 필요에 따라 적절하게 사용해야 한다.
'부트캠프 > Study' 카테고리의 다른 글
Asset (0) | 2024.01.22 |
---|---|
<Unity> Item 관리 (0) | 2024.01.12 |
<Unity> 유니티 내장 오브젝트 풀(Object Pool) (1) | 2024.01.11 |
enable과 SetActive의 차이점 (0) | 2023.12.28 |
<프로젝트> Unity 게임 개발 심화 개인과제 (1) | 2023.12.27 |