아이템 9: 박싱과 언방식을 최소화하라

값 타입은 주로 값을 저장할 때 스는 저장소이며 다형적이지 못하다.

반면 .NET Framework는 모든 타입의 최상위 타입을 참조 타입인 System.Object로 정의한다.

따라서 이 두 타입은 양립할 수 없는 것처럼 보이지만 .NET Framework는 방식과 언방식이라는 방법을 통해서 이 두 가지 서로 다른 타입을 이어준다.

박싱이란 값 타입의 객체를 타입이 정해져 있지 않은 임의의 참조 타입 내부에 포함시키는 방법이다.

이를 이용하면 참조 타입이 필요한 경우에도 값 타입을 쓸 수 있다.

언박싱이란 반대로 박싱되어 있는 참조 타입의 객체로부터 값 타입 객체의 복사본을 가져오는 방법이다.

박싱과 언방식은 System.Object 타입이나 인터페이스 타입이 필요한 곳에서 값 타입을 사용하기 위해 반드시 필요한 메커니즘이다.

하지만 이는 성능에 좋지 않은 영향을 미친다.

때로는 박싱과 언방식을 수행하는 과정에서 임시 객체가 생성되기도 하는데, 간혹 이로 인해 예상치 못한 버그가 발생하기도 한다.

따라서 박싱과 언방싱을 최소화하는 것이 좋다.

이는 .NET 2.0의 제네릭을 사용하면 박싱과 언박싱을 피할 수 있다.

하지만 Object 타입의 박싱과 언박싱을 수행해야 하는 경우가 많다.(API)

댓글남기기