[C#] 6일차 - 39. object 타입과 boxing, unboxingC#/C#200제2021. 1. 21. 15:12
Table of Contents
C#에서의 모든 형식은 모두 Object로부터 상속됩니다.
값형식의 변수가 object타입으로 변환되는것을 Boxing이라고 하고
object타입의 변수가 값형식으로 변환되는것을 unboxing이라고 합니다.
object 타입은 참조형식이기 떄문에 힙에 데이터를 할당합니다.
반면 int나 double과 같은 값 형식의 자료는 stack에 데이터를 할당합니다.
다음 예제는 원래의 변수와 박싱된 object는 서로 다른 메모리 영역을 사용하기 떄문에 다른 값을 저장할 수 있다는 것을 알 수 있습니다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace A039_Object
{
class Program
{
static void Main(string[] args)
{
int i = 123;
object o = i; // i의 값을 박싱하여 o로 복사합니다.
i = i + 10; // i의 값을 바꿉니다. o의 값은 변하지 않습니다.
int j = (int)o; // o의 값을 언박싱 하여 j로 복사합니다.
Console.WriteLine("The value-type value i = {0}", i);
Console.WriteLine("The object-type value o = {0}", o);
Console.WriteLine("The value-type value j = {0}", j);
object p = o;
o = 100;
Console.WriteLine("The object-type value o = {0}", o);
Console.WriteLine("The object-type value p = {0}", p);
}
}
}
반응형
'C# > C#200제' 카테고리의 다른 글
[C#] 7일차 - 41. switch문 (0) | 2021.01.22 |
---|---|
[C#] 6일차 - 40. if~else 조건문 (0) | 2021.01.21 |
[C#] 6일차 - 38. Nullable형 (0) | 2021.01.21 |
[C#] 6일차 - 37. 변수의 초기화와 default (0) | 2021.01.21 |
[C#] 6일차 36. Null 조건 연산자(?) (0) | 2021.01.21 |
@반나무 :: 반나무_뿌리
3년차 WPF 개발자입니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!