TIL

2024/3/18 TIL

jhwoo1221 2024. 3. 18. 21:23

'오늘의 일에서 나는 어떤 것을 배웠는지' - 학습

Q8. 박싱과 언박싱에 대해 설명해주세요
 a.(꼬리질문) 박싱, 언박싱을 사용할 때 주의해야 할 점이 있다면 무엇이 있나요?
박싱(Boxing):
박싱은 값 형식을 Object 형식이나 다른 참조형 타입으로 변환하는 과정을 의미하고,
언박싱은 참조형식을 다시 값 형식으로 변환하는 과정을 의미한다.


값 형식은 스택(Stack)에 저장되는 반면, 참조형 타입은 힙(Heap)에 저장된다.

따라서 값 형식을 참조형식으로 변환하면 스택에 있는 값을 힙에 복사하게 된다.
예를 들어, 정수(int)를 object로 박싱하면 정수 값이 힙에 저장되고 그것을 참조하는 Object 변수가 생성된다.


반대로 언박싱은 힙에 있는 값을 스택에 복사한다.
예를 들어, Object를 int로 언박싱하면 Object에 저장된 값이 스택에 복사되어 새로운 int 변수에 저장된다.

 

박싱과 언박싱을 사용할 때 주의해야 할 점:

  1. 성능에 영향을 미칠 수 있음:
    • 박싱과 언박싱은 값 형식과 참조 형식 간에 데이터를 복사하거나 변환하는 과정을 포함하므로 성능에 부정적인 영향을 미칠 수 있다.
    • 불필요한 박싱과 언박싱을 피하기 위해 성능에 민감한 부분에서는 값 형식과 참조 형식을 명시적으로 변환하는 것이 좋다.
  2. Null 체크:
    • 박싱된 객체를 언박싱할 때, 박싱되기 전에 null로 초기화되었던 경우 NullReferenceException이 발생할 수 있습니다. 따라서 언박싱하기 전에 항상 null 체크를 해야 한다.
  3. 안전한 형변환:
    • 박싱된 객체를 다시 언박싱할 때, 박싱되기 전의 형식이 달라질 수 있으므로 형변환을 안전하게 수행해야 한다.
    • 형변환 시 as 연산자나 is 연산자를 사용하여 안전하게 형변환할 수 있다. 그리고 형변환을 수행하기 전에 유효성을 검사하는 것이 좋다.
  4. 메모리 사용량:
    • 박싱된 객체는 힙에 저장되므로, 불필요한 박싱은 메모리 사용량을 증가시킬 수 있습니다. 특히 큰 크기의 값 형식을 박싱할 때에는 메모리 소비에 주의해야 한다.
  5. 가독성:
    • 박싱과 언박싱을 남용하면 코드의 가독성이 떨어질 수 있다. 따라서 박싱과 언박싱을 명시적으로 사용할 때는 주석을 추가하여 코드의 의도를 명확하게 전달하는 것이 좋다.

이러한 주의점을 염두에 두고 박싱과 언박싱을 사용하면 코드의 성능과 안정성을 향상시킬 수 있다.



'오늘의 나는 무엇을 잘했는지' - 성취

-최종 팀 프로젝트

Character.cs와 CharacterGrowth.cs를 분리하고 기능을 다듬음

캐릭터 장비- Weapon과 Armor SO를 추가함.

'오늘의 나는 어떤 문제를 겪었는지, 앞으로 어떻게 해결할 것인지' - 개선

오늘은 캐릭터 성장 스크립트 작업을 하는데 하루를 다 소비했다.
아이템 베이스 스크립트 작업이 끝나야 진행되는 작업이 많으므로, 내일은 아이템 스크립트 작업을 끝낼 수 있도록 해야겠다.