C# - 열거형(enum)

sour_gexko·2021년 3월 27일
0

C# Study

목록 보기
3/5

열거형(Enumerated Type)

enumerate (동사)
열거하다, 나열하다
  • 정수형 상수의 집합
  • 각 원소마다 고유의 이름을 가짐
  • 집합 역시 고유의 이름을 가짐
  • enum은 변수로 사용 가능
  • 실수를 줄여준다.

열거형 정의(기본형)

  • 정의는 함수 밖에서 함.
  • 첫 번째 원소의 기본값은 0
  • 아무 값도 대입해주지 않으면 원소의 값은 1씩 증가
enum EDirection
{
	North,
	South,
	East,
	West
}

열거형 정의(원소 값 직접 정의)

enum EDirection
{
	North = 5,
	South = 10,
	East = 15,
	West = East + 10
}
enum EDirection
{
	North = 5,
	South, // 6
	East, // 7
	West //8
}

// 메인 함수
EDirection direction;
  • 각 원소에 원하는 값 대입 가능: 상수 혹은 계산식
  • 부동소수점은 안됨.
  • 대입 없이 변수를 정의만 하면 기본값으로 0이 들어감.
<열거형 이름><변수명> = <열거형 이름>.<열거형 원소>;

문제점

  • 함수는 블랙박스 -> 내부 구현을 몰라도 쓸 수 있어야함.
  • 함수 시그니쳐만 보고 direction에 어떤 값이 들어갈지 유추 불가
  • 결국 함수 구현부를 봐야 함.
  • 만약 누군가가 함수 바디를 안보고 시그니쳐만 보고 판단하면 잘못된 인자를 넘길 가능성이 있음.

enum을 쓰면 좋은점

  • 코드가 읽기 좋아짐
  • 다른 값이 들어가면 컴파일 오류 발생 -> 문제 발생 여지를 사전예방
  • 함수 매개변수를 쓰이면 함수가 요구하는 인자형을 빨리 알 수 있음 -> 함수에 잘못된 값이 넘어가는 걸 예방

enum 꼼수 - 배열 만들기

enum EDirection
{
	North,
	South,
	East,
	West,
	MAX,
};

// 어느 함수
string[] directions = new string[(int)EDirection.MAX];
for (int i = 0; i < directions.Length; ++i)
{
	// 코드
}

코딩 표준

  • 유사한 성질을 가진 정보들을 나열해야 할 때 정수형 상수보다는 enum을 사용할 것
  • 열거형에서 char를 사용 할 수 있음(정수형이기 때문에)
profile
개발자가 되고싶은 직장인

0개의 댓글