http://msdn.microsoft.com/ko-kr/library/yz2be5wk.aspx
boxing은 값 형식을 object 형식 또는 이 값 형식에서 구현된 임의의 인터페이스 형식으로 변환하는 프로세스입니다.
CLR은 값 형식을 boxing할 때 값을 System.Object 내부에 래핑하고 관리되는 힙에 저장합니다. unboxing하면 개체에서 값 형식이 추출됩니다. 다음 예제에서는 정수 변수 i를 boxing하고 개체 o에 할당합니다.
힙과 스택
값(value) 형은 스택(STACK) 이라는 메모리공간에 생성 참조(Reference Type)형은 힙(Heap)이라는 메모리공간에 생성
Stack 클래스
제네릭이 아닌 간단한 후입선출(LIFO) 개체 컬렉션을 나타냅니다.
Reference Type은 보통 말하는 객체생성할때 사용
value 타입은 할당된 바이트와 자신을 변수로 가지고 있는 객체에 대한 주소만 가지고 있음
int i = 123; object o = (object)i; // boxing
그런 다음 o 개체를 unboxing하고 정수 변수 i에 할당할 수 있습니다.
o = 123; i = (int)o; // unboxing
boxing
은 가비지 수집되는 힙에 값 형식을 저장하는 데 사용됩니다. boxing은 값 형식을 object 형식 또는 이 값 형식에서 구현된 임의의 인터페이스 형식으로 변환하는 암시적 변환입니다. 값 형식을 boxing하면 힙에 개체 인스턴스가 할당되고 값이 새 개체에 복사됩니다.
다음과 같이 값 형식 변수를 선언합니다.
int i = 123;
다음 문에서는 변수 i에 암시적으로 boxing 연산을 적용합니다.
object o = i; // Implicit boxing
Boxing 변환
다음 예제에서와 같이 명시적으로 boxing을 수행할 수도 있지만 명시적 boxing이 반드시 필요한 것은 아닙니다
예제
class TestBoxing
{
static void Main()
{
int i = 123;
object o = i; // Implicit boxing
i = 456; // Change the contents of i
System.Console.WriteLine("The value-type value = {0}", i);
System.Console.WriteLine("The object-type value = {0}", o);
}
}
/* Output:
The value-type value = 456
The object-type value = 123
*/
다음 문은 boxing 및 unboxing 연산을 모두 보여 줍니다.
int i = 123; // a value type
object o = i; // boxing
int j = (int)o; // unboxing
다음 그림에서는 이전 문의 결과를 보여 줍니다.
Unboxing 변환
'C#.NET' 카테고리의 다른 글
[날짜 , 날짜형식 ,날짜검색,날짜패턴] 사용자 지정 DateTime 형식 문자열 (0) | 2010.01.12 |
---|---|
[설치,배포]설치 후에 프로그램을 자동으로 실행하는 방법 (0) | 2010.01.11 |
[ DataTable ] 데이타 테이블로 데이타리스트, 그리드뷰 채우기 (0) | 2010.01.07 |
생성자의 종류 와 프로퍼티의 의미 (0) | 2010.01.05 |
제네릭 List<T> (0) | 2010.01.04 |
[MSDN].NET Framework Client Profile (0) | 2009.12.30 |
[MSDN]Windows 서비스 응용 프로그램을 위한 설치 프로젝트를 만드는 방법 (0) | 2009.12.29 |
base(C# 참조) (3) | 2009.12.29 |
app.config 읽기 (0) | 2009.12.23 |
초간단 .NET 날짜간격 구하기 (0) | 2009.12.15 |