object

sz L·2023년 4월 13일
0

씨샵

목록 보기
16/17
post-thumbnail
post-custom-banner

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());
        }
    }
}

profile
가랑비는 맞는다 하지만 폭풍은 내 것이야
post-custom-banner

0개의 댓글