[개념] 박싱(Boxing)과 언박싱(Unboxing)
- 📕 Programing/C#
- 2025. 3. 15.
| 박싱(Boxing)과 언박싱(Unboxing)
- object 형식은 참조 형식이기 때문에 힙에 데이터를 할당한다.
- int 형식이나 double 형식은 값 형식이기 때문에 스텍에 데이터를 할당한다.
- 그런데 우리는 앞에서 값 형식의 데이터를 object 형식 객체에 담았다.
이 경우에는 어느 메모리에 데이터가 할당되는 걸까?
- object 형식은 값 형식의 데이터를 힙에 할당하기 위한 "박싱(Boxing)" 기능을 제공한다.
- object 형식에 값 형식의 데이터를 할당하려는 시도가 이루어지면 Object형식은 박싱을 수행해서 해당 데이터를 힙에 할당한다.
- 박싱은 쉽게 생각해서 상자로 포장한다는 뜻이다.
object a = 20;
int b = (int)b;
a는 20을 박싱되어 저장된 힙을 참조하고 있다.
b는 a가 참조하고 있는 메모리로 부터 값을 복사하려고하는 중이다.
이때 박싱된 값을 꺼내 값 형식 변수에 저장하는 과정을 일컬어서 언박싱(Unboxing) 이라 한다.
예제
using System;
using static System.Console;
namespace ConsoleApp1
{
internal class MainApp
{
static void Main(string[] args)
{
int? a = null;
Console.WriteLine(a.HasValue); // a는 null이므로 False 출력
a = 37;
Console.WriteLine(a.HasValue); // a는 37을 갖고있으므로 True 출력
Console.WriteLine(a.Value); // 37을 출력
}
}
}
참고 : https://thedotnetguide.com/csharp-boxing-and-unboxing/
Boxing and Unboxing in C#.Net -
Boxing in C# is the process of converting a value type to a reference type and during Unboxing process, it unwraps reference type variable to value type.
thedotnetguide.com
'📕 Programing > C#' 카테고리의 다른 글
✉️ C#으로 SMTP를 이용한 HTML 이메일 발송하기 (0) | 2025.03.25 |
---|---|
프로퍼티 (0) | 2025.03.23 |
CLR (Common Language Runtime) 이란? (1) | 2025.03.14 |
WinForm) ControlBox (0) | 2024.10.27 |
JObject의 key 값을 추출하는 방법 (0) | 2024.09.30 |