enum이란 여러개의 상수를 하나의 컨테이너에서 관리하기 위해 사용하는 자료형입니다.
그런데 왜 굳이 하나로 관리할까요?
우리가 관리해야할, 또는 기억해야 할것들이 많다면 우리 머리로 일일이 기억하기 어렵기 때문입니다.
enum을 쓰면 왜 기억하기 쉬울까요?
enum의 자동완성 기능
바로 자동 완성 기능 때문인데요.
c#의 빌트인 enum중 하나인 ConsoleColor를 예로 들어 설명해보겠습니다.
(ConsoleColor은 콘솔창에 컬러를 바꾸는 역할을 함)
![[c#] enum(열거형) 사용 이유/사용법 - enum의 자동완성 기능 [c#] enum(열거형) 사용 이유/사용법 - enum의 자동완성 기능](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
보시는 것처럼 .(점)을 하나찍으면 해당 enum에 포함된 모든 컬러가 노출이 됩니다.
우리는 마치 주관식이 아닌 객관식 문제풀듯 내용물에 접근할 수 있게 되는거죠.
switch 구문과 사용
이외에도 스위치 구문 인자로 enum을 넣으면 해당 모든 항목들을 기준으로 조건문이 만들어집니다.
![[c#] enum(열거형) 사용 이유/사용법 - switch 구문과 사용 [c#] enum(열거형) 사용 이유/사용법 - switch 구문과 사용](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
위 예시를 보시면 앞서 소개해드렸던 ConsoleColor 빌트인 enum을 인자로 넣고 엔터를 누르면 해당 enum에 들어있는 항목들이 모두 노출 되고 각 항목들이 조건문으로 사용되는걸 볼 수 있습니다.
직접 enum 객체 만들어보기
enum이라는 명칭으로 중괄호와 함께 요소들을 넣어주면 됩니다.
![[c#] enum(열거형) 사용 이유/사용법 - 직접 enum 객체 만들어보기 [c#] enum(열거형) 사용 이유/사용법 - 직접 enum 객체 만들어보기](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
마찬가지로 .(점)을 찍으면 해당 enum객체의 내용물이 보이게 되죠.
인덱스(index) 번호로 접근
enum객체 내부의 각 요소들을 기본적으로 인덱스번호를 가지고 있습니다.
인덱스번호의 접근하는 방법은 아래와 같이 (int)타입캐스팅을 적용해주면됩니다.
![[c#] enum(열거형) 사용 이유/사용법 - 인덱스(index) 번호로 접근 [c#] enum(열거형) 사용 이유/사용법 - 인덱스(index) 번호로 접근](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
그러면 해당 요소의 인덱스 번호가 노출이 됩니다.
output :
0
각 요소들은 디폴트로 0, 1, 2 식으로 +1 씩 커지는 구성입니다.
그렇기 때문에 첫번째 요소인 김치찌개는 0이 되겠죠.
디폴트 인덱스(index) 번호 변경
반면 이 디폴트 값을 변경할 수도 있습니다.
각 요소에 임의의 값을 넣어주는것이죠.
![[c#] enum(열거형) 사용 이유/사용법 - 디폴트 인덱스(index) 번호 변경 [c#] enum(열거형) 사용 이유/사용법 - 디폴트 인덱스(index) 번호 변경](https://blog.kakaocdn.net/dn/nFxBH/btrB49ukW33/Za2xS9WvLouZjHGrBkvg9K/img.png)
output :
![[c#] enum(열거형) 사용 이유/사용법 - 디폴트 인덱스(index) 번호 변경 [c#] enum(열거형) 사용 이유/사용법 - 디폴트 인덱스(index) 번호 변경](https://blog.kakaocdn.net/dn/cg66qZ/btrCicvDC59/Tu69bpt0EKoxSurIkTqH2K/img.png)
하지만 기본적으로 인덱스번호는 1씩 커지기 때문에 굳이 위처럼 다 안적어도 되긴합니다.
아래와 같이 하나만 지정해줘도 알아서 1씩 증가시켜 인식하기 때문입니다.
![[c#] enum(열거형) 사용 이유/사용법 - 디폴트 인덱스(index) 번호 변경 [c#] enum(열거형) 사용 이유/사용법 - 디폴트 인덱스(index) 번호 변경](https://blog.kakaocdn.net/dn/2u25p/btrB6jJIaYn/wYdgZEt9FBkDN1yUzpqUKk/img.png)
![[c#] enum(열거형) 사용 이유/사용법 - 디폴트 인덱스(index) 번호 변경 [c#] enum(열거형) 사용 이유/사용법 - 디폴트 인덱스(index) 번호 변경](https://blog.kakaocdn.net/dn/cbxjW5/btrB9uSjRup/fvF71vnPsQkmvhgqv5wB9K/img.png)
output :
![[c#] enum(열거형) 사용 이유/사용법 - 디폴트 인덱스(index) 번호 변경 [c#] enum(열거형) 사용 이유/사용법 - 디폴트 인덱스(index) 번호 변경](https://blog.kakaocdn.net/dn/bJbRag/btrB9tFUnu2/2ITrd2xaFWxAYEwSZQtlV0/img.png)
-1 부터 시작했으니 밥의 인덱스번호는 1이 됩니다.
enum 요소를 문자형으로 보기(with nameof)
이 외에도 해당 요소를 문자형으로 보고 싶으면 nameof()를 사용하면 됩니다.
![[c#] enum(열거형) 사용 이유/사용법 - enum 요소를 문자형으로 보기(with nameof) [c#] enum(열거형) 사용 이유/사용법 - enum 요소를 문자형으로 보기(with nameof)](https://blog.kakaocdn.net/dn/bl6dHK/btrCajXmYB4/QsFFRGAmZTYeXY1d5pPyB1/img.png)
output :
![[c#] enum(열거형) 사용 이유/사용법 - enum 요소를 문자형으로 보기(with nameof) [c#] enum(열거형) 사용 이유/사용법 - enum 요소를 문자형으로 보기(with nameof)](https://blog.kakaocdn.net/dn/dqHu5F/btrCgJtHsyy/7c8FLhDTgLQZUk9tJYqKP1/img.png)
'c#' 카테고리의 다른 글
[c#] 값 형식(value types) VS 참조 형식(reference types) (1) | 2022.05.17 |
---|---|
[c#] Attribute(어트리뷰트) 란? (0) | 2022.05.16 |
[c#] 델리게이트(대리자) 익명 함수로 선언 (0) | 2022.05.13 |
[c#] var 키워드란? (0) | 2022.05.13 |
[c#] 익명타입이란? (0) | 2022.05.13 |
댓글