object는 C#의 데이터 형식 중 하나이다.
모든 데이터 형식은 Object 형식으로부터 상속받았다고 말한다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace cs26_branch
{
internal class Program
{
static void Main(string[] args)
{
object a = 1234;
object b = "안녕하세요 이수진입니다.";
object c = true;
object d = 3.14159265;
object e = 'Z';
Console.WriteLine(a);
Console.WriteLine(a.GetType() + "\n");
Console.WriteLine(b);
Console.WriteLine(b.GetType() + "\n");
Console.WriteLine(c);
Console.WriteLine(c.GetType() + "\n");
Console.WriteLine(d);
Console.WriteLine(d.GetType() + "\n");
Console.WriteLine(e);
Console.WriteLine(e.GetType() + "\n");
}
}
}
박싱이란 어떤 값 형태를 지는 데이터를 참조 형태로 바꾸는 것을 말한다.
이때 데이터는 Object형식으로 변환되어(형변환) 저장된다(힙 영역에 저장)
=> 주소값만을 갖는다는 의미로 C++에서 사용하는 포인터와 같은 의미이다
언박싱은 박싱과 반대되는 개념으로 주소 값만 가지고 있는 참조 형태의 데이터를 다시 값 형태를 지닌 데이터로 변환하는 것을 말한다.
사용 예
박싱
int i = 5; object o = i;
i라는 int형 데이터가 object형으로 형변환이 일어난다
언박싱
int i = 5; object o = i; int j = (int)(o);
사용 예시
int[] array = new int[2];
array[0] = 1;
//array[1] = "leesujin";
3줄에서 에러 발생 : int형인데 string형으로 초기화해서
하지만 가장 상위 타입을 object 배열 타입으로 지정해준다면 다양한 타입을 다 넣을 수 있다
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace cs26_branch
{
internal class Program
{
static void Main(string[] args)
{
object[] array = new object[2];
array[0] = 1;
array[1] = "sujin";
Console.WriteLine(array[0]);
Console.WriteLine(array[0].GetType());
Console.WriteLine(array[1]);
Console.WriteLine(array[1].GetType());
}
}
}