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(); } } }
|
cs |
'C# > 아는것' 카테고리의 다른 글
IndexOf와 static 한정자 (0) | 2019.03.27 |
---|---|
<data type>var (0) | 2019.03.26 |