아디봉의.net

C# value 타입과 reference 타입 본문

C#

C# value 타입과 reference 타입

아디봉 2012. 9. 14. 15:02

1. Value (값타입)

value타입으로 변수를 선언하면 자동으로 메모리가 생성된다.

ex)int a; //4byte 메모리생성

 

A.built-in 값타입

정수형: byte, char2(2byte), int, long

실수형: float, double, decimal(16byte)

불형: bool

 

B.User-Define 값타입

사용자가 직접 메모리의 지도를 만들어 사용하기 떄문에 단순한 타입이 아니다.

 

struct - 구조체는 기본으로 제공되는 데이터 타입이 아니라 사용자가 직접 만들어서 사용하는 데이터 타입이다. 즉 데이터 타입을 사용자가 직접 만들어서 사용하는 것이다.

 

ex) struct Person

{

int num; //Person 내부의 멤버

int age; //Person 내부의 멤버

double height; //Person 내부의 멤버

float weight; //Person 내부의 멤버

}

 

Person 구조체의 메모리의 크기와 메모리의 형태

person 데이터 타입의 크기 = 4(int) + 4(int) + 8(double) + 4(int)

person 데이터 타입의 형태 = int + int + double + int

 

person 데이터 타입을 사용하기

Person sister; - 새로운 사용자정의 데이터 타입

Person brother;    - 새로운 사용자정의 데이터 타입

각각 20byte씩 의 메모리를 보유한 변수가 된다.

 

sister.num = 1000;

sister.age = 20;

sister.height = 165.3D;

sister.weight = 51.0F;

 

brother.num = 2000;

brother.age = 30;

brother.height = 170.0D;

brother.weight = 65.0F;

 

 

enum(열거형) - 열거형타입으로 변수를 선언하는 것은 일반데이터 타입과동일하지만 열거형 변수에는 정해진 갓ㅂ을 할당하는 것이 원칙이다.

 

열거형 데이터 타입의 선언     

enum signFlag {black, yellow, green, blue, red};

여기서 signFlag 는 데이터타입이다.

 

열거형상수

black, yellow, green, blue, red는 상수이며 자동으로 0,1,2,3,4의 값이 할당된다.

 

열거형의 초기값은 기본으로 위의 경우 순서대로 0,1,2,3,4 로 설정되는데 변경하려면

enum signFlag {black, yellow = 3, green, blue, red};

 

enum signFlag {black, yellow = 3, green, blue=7, red};

로 할당해주면된다.

 

* 구조체와 열거형의 차이점

구조체의 멤버는 메모리 지도를 만드는데 사용되는 변수들로 이루어져 있지만, 열거형의 멤버는 변수에 할당할 상수들로 이루어져 있다.

 

2. Reference

reference 타입으로 변수를 선언하면 참조변수에 해당하는 메모리만 생성된다.

실제메모리는 new 연산자를 이용해서 생성해주어야함

ex)

class Top

{

...

}

top t; //참조변수선언

t = new Top(); //실제 메모리의 생성

 

'C#' 카테고리의 다른 글

C# 값.참조타입 메모리정의, 객체& 인스턴스정의  (0) 2012.09.14
C# 클래스란?  (0) 2012.09.14
C# is와 as 차이점 사용법  (0) 2012.09.14
C# dll import 사용하기  (0) 2012.09.13
C# 1.1 Delegate  (0) 2012.09.02