(10101101)173/C#2009. 3. 24. 12:33
클래스(Class), 구조체(Structure)와 함깨 데이터 타입을 만드는 또다른 방식 입니다. 열거형은 변수를 만들면 만들어진 변수에 정해진 값을 넣는걸 원칙으로 합니다. 그런대 이 변수에 들어가는 데이터 형식은 오직 정수(상수)란 특이점이 있습니다. 이 말에 의미는 소스를 보면 알 수 있습니다.
enum weekSystem
{
	Sunday,
	Monday,
	Tuesday,
	Wednesday,
	Thursday,
	Friday,
	Saturday
}
일주일은 총 7일로, 7일만큼의 요일이 있습니다. 일종의 불변의 사항입니다. 1주는 7일이고 7일은 일, 월 ~ 금, 토요일로 구성이 되었다는 불변사항, 그럼다면 변수로 지정하는것 보단 따로 정의하여 가독성을 높게만드는게 좋아 보입니다. 그래서 위와같이 enum키워드를 이용해 weekSystem이란 열거형을 만들었습니다. 현제 weekSystem에는 7개의 요일이 선언되어 있는대 이 7개의 요일은 이미 0에서 6까지 값이 할당되어 있습니다. 이는 이전에 설명한 바와 같이 선언과 함깨 메모리가 자동으로 할당되는 원리입니다. 때문에 Sunday(일요일)부터 Saturday(토요일)까지 0부터 6이 할당되어 있습니다.
weekSystem wSystem;

wSystem = weekSystem.Sunday;
Console.WriteLine(wSystem);

wSystem = weekSystem.Monday;
Console.WriteLine(wSystem);
위와 같이 할 경우 Sunday와 Monday가 출력되게 됩니다. 이를 만약 숫자로 출력하려면 약간의 변형을 가합니다.

[그림 1. enum 출력]
weekSystem wSystem;

wSystem = weekSystem.Sunday;
Console.WriteLine((int)wSystem);

wSystem = weekSystem.Monday;
Console.WriteLine((int)wSystem);
출력을 하는 4, 7번 라인에서 wSystem앞에 "(int)"를 집어넣어 형변환을 합니다.

[그림 2. enum 출력, 형변환]

열거형은 자동적으로 메모리 할당을 한다고 위에서 말했습니다. 그 할당은 0부터 시작하지만 특정값을 지정해 줄 수 있습니다. 다음소스는 월요일을 2로 지정한 경우 입니다.
	weekSystem wSystem;

	wSystem = weekSystem.Sunday;
	Console.WriteLine((int)wSystem);

	wSystem = weekSystem.Monday;
	Console.WriteLine((int)wSystem);

	wSystem = weekSystem.Tuesday;
	Console.WriteLine((int)wSystem);
}

enum weekSystem
{
	Sunday,
	Monday = 2,
	Tuesday,
	Wednesday,
	Thursday,
	Friday,
	Saturday
}
enum문에서 월요일(Monday)에 2라고 선언하자 일요일(Sunday)는 0, 화요일은(Tuesday) 3으로 값이 할당되었습니다.

[그림 3. enum문에서 값을 설정한 경우]


Posted by Special Alex