Boxing이란?

 

값 형식을 object 형식으로 변환하는 프로세스

 

프로세스란?

 

프로세스(process)는 컴퓨터에서 연속적으로 실행되고 있는 프로그램이다. 종종 스케줄링의 대상이 되는 작업(task)이라는 용어와 거의 같은 의미로 쓰인다. 여러 개의 프로세서를 사용하는 것을 멀티프로세싱이라고 하며 같은 시간에 여러 개의 프로그램을 띄우는 시분할 방식을 멀티태스킹이라고 한다. 프로세스 관리 운영 체제의 중요한 부분이 되었다.

 

프로그램이란?

실행될 때 특정 작업(specific task)을 수행하는 일련의 명령어들의 모음(집합)이다.

 

 

 

값을 내부에 래핑하고 힙에 저장

 

값형식은 값이 직접 스택에 저장됨

 

값형식의 값을 boxing하면 래핑해서 힙에 저장

 

boxing은 암시적, 명시적 둘가능

 

unboxing은 명시적만 가능

 

https://www.youtube.com/watch?v=g5f8OvuEN3w&list=PLTFRwWXfOIYBmr3fK17E0VhKPyYrGy75z&index=16
https://www.youtube.com/watch?v=g5f8OvuEN3w&list=PLTFRwWXfOIYBmr3fK17E0VhKPyYrGy75z&index=16

 

 

이 그림을 이해하는 것이 중요하다

 

1. 정수형 변수 i는 123이라는 값을 스택 메모리에 저장

2. 객체 타입의 obj변수를 선언한다

3. i의 값을 박싱한다

그러면 i의 값이 주소를 갖게 된다

4. 그 주소값을 obj가 알게되어 스택에 주소가 저장 힙에는 값이 저장한다

 

단순 참조 할당보다 최대 20배 더 오래 걸릴 수 있다.

언박싱 할때 캐스팅 프로세스는 할당보다  4배 더 오래 걸릴 수 있다. -dosc.microsoft.com

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;

namespace Step17
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //박싱
            int i = 123;
            //object obj = i; //암시적 박싱
            object obj = (object)i; // 명시적 박싱
            // 명시적으로 박싱할 경우 캐스팅 중복 메시지를 볼 수 있다.

            //언박싱
            //int j = obj; // 언박싱은 명시적이어야 한다.
            int j = (int)obj; //명시적 언박싱

            Console.WriteLine(i);
            Console.WriteLine(obj);
            Console.WriteLine(j);

        }
    }
}

'Study > C#' 카테고리의 다른 글

[C#] 산술 연산자  (0) 2024.05.26
[C#] 입력 받기  (0) 2024.05.25
[C#] 값형식과 참조형  (0) 2024.05.25
[C#] 문자열 보간  (0) 2024.05.25
[C#] 형식 변환  (0) 2024.05.25

+ Recent posts