재우니의 블로그



Value 타입과 Reference 타입에 대해서 간단히 살펴보죠.

보통 data type 이라면 int, char, double 등이 생각이 나죠. 닷넷에서는 System.Object 라는 클래스에서 파생이 되었답니다.

저장시에 무엇이 저장되며, 메모리는 어느 부분을 사용하는지, 대표적인 데이터형은 뭔지를 알아보죠.

===============================================================
value 타입 reference 타입
===============================================================
어떤것이 저장? data 데이터가 위치하는 주소
----------------
메모리 어디 사용? stack(스택) heap (힙)
----------------
대표적인 data형? 기본datatype,구조체 클래스,배열,데리게이트
,열거형 인터페이스
===============================================================


value type 에는 어떤 데이터타입이 있을까요?

bool, byte,char,decimal, double, float, int, long, sbyte,short, uint,ulong,ushort 이 있답니다.
reference type 은 두개만 있어요. object, string 입니다.


위의 데이터타입을 외우기 보다는 그냥 인쇄해서 옆에 붙혀서 보고 하세요..^^;

데이터타입은 사용하기에 별로 어렵지 않습니다. 어떤식으로 구현하는지가 문제덩어리죠. 데이터타입은 단지 데이터 형태가 요롷게 생겼다는 것을 지정할 뿐입니다. 단지 데이터타입만 사용할 수 없기 때문이죠.

데이터 타입의 역할은 어떻것일까요? 보통 데이터타입이라면 메모리가 생각이 나죠. 사용할 변수를 만드는데 그 변수에 어떠한 데이터가 들어갈 수 있는지를 명시해야 하는데 이것을 명시해주는 것이 데이터타입입니다.
변수의 모양새를 결정하는 것은 바로 데이터타입을 결정하는 일이죠.

int a = 1;


int 가 data type 이며, a는 변수, 1은 값을 말합니다. 따라서 3가지는 필연적인 관계입니다. 그러나 이미 만들어진 데이터타입만 사용한다면 웃기죠? 사용자가 직접 정의해서 만든 데이터타입이 바로 클래스(class) 입니다.

reference 타입은 value 타입과 다릅니다. 이는 클래스, 배열, 델리게이트, 인터페이스를 보통 사용하며 heap 영역에 저장이 됩니다.

예를 들어 보죠..

object a;
object b;
a = new object();
b = a;


object a, object b는 어떤것도 가리키고 있지 않기 때문에 아무것도 아니며, new 연산자를 이용하여 객체를 생성하고 a 로 하여금 객체를 가리키도록 하며, b=a; 는 a의 주소값을 b 에게도 주소값을 주어 가르키도록 합니다


posted by 심재운 (shimpark@gmail.com)