티스토리 뷰
열거형은 사용자 정의 타입이다.
기본형 중에서도 숫자와 관련된 타입(int, long, double, short 등등)을 상속받아 정의할 수 있다.
기본형식은
[접근제한자] enum enum명
{
식별자1, 식별자2, 식별자3 .......
}
처럼 사용
enum Today : byte { Monday, Tuesday, Wednesday } enum Olympians { Zeus, Hera, Poseidon = 10, Athena, Ares = 20, Aphrodite }
다음은 enum을 정의한 것으로
Today와 Olympians이다.
Today처럼 상속을 받으면 해당 기본형타입을 토대로 사용하며, 상속받는 타입이 없을 경우(Olympians경우)에는 기본적으로 int(System.Int32)를 상속받는다.
enum은 각 식별자마다 자리 값을 가지고 있으며, Today의 경우 0부터 차례대로 1씩 증가한 값을 갖는다.
Monday = 0, Tuesday = 1, Wednesday = 2
Olympians의 경우에는 일부 식별자를 자릿값을 할당 해줬는데 이때의 각 자릿수의 값은
Zeus = 0, Hera = 1, Poseidon = 10, Athena = 11, Ares = 20, Aphrodite = 21
의 자릿수 값을 갖는다. 자릿값을 선정한 식별자 다음에 자릿값을 선정하지 않은 식별자가 온다면 +1이 더해진 값으로 자릿값이 할당된다.
Today to = Today.Monday; //console문에서는 Monday를 출력한다. 자릿수인 0이 출력될 것 같지만 //Object의 ToString을 enum에서 재정의 해서 식별자를 문자열로 리턴한다. Console.WriteLine(to); Today to1 = (Today)1; //enum은 각각의 식별자 값에 순서 값을 가지고 있다. 0부터 시작한다. //1이 Today변수 to1에 할당하면 1에 해당하는 자리(0부터 시작이므로 두번째) 식별자 Tuesday를 출력한다. Console.WriteLine(to1); byte i = (byte)to1; //이런식으로 해당 자리값을 출력할 수도 있다. Console.WriteLine(i); Olympians o = Olympians.Poseidon; Console.WriteLine(o); //지정한 자릿값인 10이 출력된다. Console.WriteLine((int)o); Olympians o2 = (Olympians)3; //3이라는 자릿값은 없기 때문에 o2는 그냥 숫자 3을 리턴한다. Console.WriteLine(o2); Today today = Today.Monday | Today.Tuesday; //enum의 HasFlag 메서드를 사용하면 해당하는 값을 포함하고 있는지 검사할 수 있다. Console.WriteLine(today.HasFlag(Today.Wednesday)); Console.WriteLine(today);
'C#' 카테고리의 다른 글
delegate 델리게이트 (함수를 담을 수 있는 객체) (0) | 2016.01.29 |
---|---|
연산자 오버로딩 operator , 클래스간 형변환 (0) | 2016.01.28 |
모든 타입의 조상 System.Object (1) | 2016.01.22 |
is 와 as 키워드(상속관계 및 형변환 가능 유무 판별) (0) | 2016.01.22 |
상속(inherit) (0) | 2016.01.16 |
Comments