Boxing Unboxing

C#/아는것 2019. 3. 28. 18:19

구조체는 다른 구조체나 클래스에서 상속할 수 없음
구조체에 대한 상속을 흉내내기 위해서, 인터페이스를 사용한다.

박싱
값형식이나 구현된 객체를 Object형식이나 임의의 인터페이스 형식으로 변환하는 프로세스
값형식->참조형식으로 변환하여 힙에 저장, 박싱은 암시적이다(자동으로 해준당)

언박싱
인터페이스 형식을 객체나 값형식으로 변환하는 프로세스
참조형식->값형식, 언박싱은 명시적으로 변환해야만 한다.
단, 언박싱은 박싱을 한 참조형에게만 사용이 가능하다.

인터페이스(클래스의 기능의 정의가 포함되어있는 것)(상속 못하는 걸 상속하는 척하기위한 거)
인터페이스는 클래스 또는 구조체에서 구현할 수 있는 관련 기능에 그룹에 대한 정의가 포함되어 있다.
해당기능은 언어가 클래스의 여러 상속을 지원하지 않음 ->> 그래서 인터페스를 써야함

구조체는 다른 구조체나 클래스에서 상속할 수 없음
구조체에 대한 상속을 흉내내기 위해서, 인터페이스를 사용한다.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 

namespace Study_05

{

    class Program

    {

        static void Main(string[] args)

        {

            int i1 = 0;

            object o1 = i1;//boxing

            int j1 = (int)o1;//unboxing 

 

            Console.WriteLine("i1:{0} >>Boxing>> o1:{1} >>unboxsing>>j1:{2}", i1,o1,j1);

 

            short i2 = 0;

            object o2 = i2;

            //int j2 = (int)o2;//short형을 int 형으로 언박싱 불가!, 자료형을 맞춰줘야함

            //Console.WriteLine("i2:{0} >>Boxing>> o2:{1} >>unboxsing>>j2:{2}", i2, o2, j2);

 

            Console.ReadKey();

        }

    }

}

 

Colored by Color Scripter

cs

'C# > 아는것' 카테고리의 다른 글

IndexOf와 static 한정자  (0) 2019.03.27
<data type>var  (0) 2019.03.26
: