Programming/C#
C# 에서의 Enum
blueasa
2010. 7. 6. 22:20
기껏해봐야 C++하다 JAVA혹은 C#하는 경우가 고작이지만
새로운 언어로 코딩하려다 보면 이런 기초적인 문법에서 막힐 때가 있다.
역으로 C++로 버닝하다 간만에 C를 하는데 BOOL을 선언하고 "왜 안되지?"하는 고민할때도 있고.
enum역시 쓸때마다 "C#에서는 뭔가 틀린 점이 있지 않았나?" 하고 매번 의구심을 갖지만 매번 까먹는다.
또 까먹을까 싶어서 이렇게 정리해둔다.
C#에서의 enum은 이전의 C, C++과 다를 바가 없다.
enum 키워드를 사용하여 괄호{} 안에 상수를 열거하는 것.
이때 열거된 상수들은 정수 계열 형식을 갖는다.
아무런 값을 초기화시키지 않았을 경우,
기본적으로 첫 번째 열거자의 값은 0, 그 이후로 열거자 값은 순서대로 1씩 증가한다.
msdn의 예를 들면
enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri};
이때, Sat = 0, Sun = 1 ..... Fri = 6 을 값으로 갖는다는 말.
그런데 열거자의 값을 설정할 수도 있다. 위의 예를 변형하여 설명하면
enum Days {Sat = 1, Sun, Mon, Tue, Wed, Thu, Fri};
이렇게하면 Sat의 값은 1이 되고 그 숫자 이후로 각 열거자들의 값이 설정된다.
즉, Sun = 2, Mon = 3, ... , Fri = 7 을 값으로 갖는다.
enum으로 선언한 상수들은 정수 계열의 형식을 갖지만 실제로 정수 계열의 형식으로 변환하기 위해서는
명시적 캐스트가 있어야 한다.
int x = (int)Days.Sun;
enum으로 선언한 상수들의 형식을 지정해 줄 수도 있다.
enum Days : float {Sat, Sun, Mon, Tue, Wed, Thu, Fri};
위와 같이 선언하면 Days의 상수들은 전부 float형의 값을 가지게 된다.
[출처] C# 에서의 Enum|작성자 Triumph
반응형