Enum이란?
열거형(또는 열거형 형식)은 기본 정수 숫자 형식의 명명된 상수 집합에 의해 정의되는 값 형식이다.
기억하기 어려운 상수들을 기억하기 쉬운 이름 하나로 묶어 관리하는 표현 방식이다. 코드가 길어지면 길어질수록 가독성이 떨어지기 때문에 그룹화시켜 도움을 준다.
Enum 특징?
1. 상수는 0부터 시작하여 1씩 증가하는 정수 값을 가진다. 예를들어 a가 0이면 b, c는 직접 안써줘도 1,2이다. 물론 내가 직접 a를 100이라고 했을때도 마찬가지로 b는 101이다.
2. 각 상수에는 이름이 할당되며, 해당 이름은 enum 외부에서 사용된다. (사용방법은 enumName.상수)
3. enum의 값은 기본적으로 int형이지만, 다른 정수형으로 변환할 수 있다.
4. enum 값은 비트 플래그로 사용할 수 있다.
5. switch 문에서 편리하다.
6. 코드의 가독성을 향상한다.
> 열거형 공식문서참고
https://learn.microsoft.com/ko-kr/dotnet/csharp/language-reference/builtin-types/enum
열거형 - C# 참조 - C#
선택 또는 선택의 조합을 나타내는 C# 열거형에 대해 알아봅니다
learn.microsoft.com
사실 이렇게만 말하면 그룹으로 만드는구나,
그냥 그렇구나 하고 넘어가지만 놀랄만한건...
우리가 그렇게 지독하게 쓴 콘솔창 색 바꾸는 코드가 바로 닷넷프레임워크에 내장되어 있는 열거형 쓰는 거다.
Console.ForegroundColor = ConsoleColor.Blue;
ConsoleColor를 치고 .을 누르면 여러개가 나왔는데 이게 열거형이라서 그런지 몰랐다.
처음알게된 사실이다.
사용자 정의 enum
enum은 특정 클래스 내 선언해서 사용해도 된다고한다.
예를들어 사용하면 이렇다.
class EnumMilky
{
enum FirstName {yu, kim, lee}
static void Main()
{
FirstName first = FirstName.yu;
Console.WriteLine(first);
if (first == FirstName.yu)
{
Console.WriteLine("sujeong");
}
}
}
혹시라도 오타가 있으면 죄송합니다.. 모바일로 손코딩을 하다보니 지금 기억을 더듬으면서 쓰고있어요..
저렇게 쓰면 결과는
yu
sujeong
이렇게 나온다.
enum의 좋은점은 enum을 선언하고 점만 입력하면 자동으로 떠서 변수가 많은 경우에는 편리하다.
비주얼스튜디오에서는 enum 값을 switch문에 대입하면 자동으로 case문을 만드는 기능을 해준다니 저번 프로젝트 때 안 써본 게 한이다....
Enum 관련 클래스
1. Enum.GetNames() : 지정된 enum의 상수 리스트를 배열로 가져오기
2. Enum.Parse() : 문자열을 특정 enum으로 변환하기
대표적으로 두개 가져왔고 다른 클래스도 엄청 많다!
> 열거형 클래스 공식문서 참고
https://learn.microsoft.com/ko-kr/dotnet/api/system.enum?view=net-8.0
Enum 클래스 (System)
열거형에 대한 기본 클래스를 제공합니다.
learn.microsoft.com
Enum을 알게된 후 느낀점
사실 아직 내부 구조를 잘 모르는 나는 이게 가시성이 좋다는걸 알지만 확 와닿지는 않는다. 이 점에 대해서는 내가 공부가 더 필요하다고 느끼고 구조체, 열거형, 클래스, 메서드쪽을 좀더 공부해봐야겠다. 하지만!!!! 사람들이 많이 권하는만큼 좋은 코딩습관을 들이기위해선 많이 노력해야겠다.
모바일로 썼더니 길게 안써진다. Enum에 대해서 꾹꾹 눌러서 모두 담았으니 모두 안녕..
'Record > TIL' 카테고리의 다른 글
[Unity] Json 직렬화, 역직렬화 (0) | 2024.04.30 |
---|---|
[Unity] 평범한 직장인이였던 내가 차에 치였더니.. (2) | 2024.04.29 |
[Unity] 첫번째 개인프로젝트 끝 (6) | 2024.04.25 |
[Unity] 추상클래스 (2) | 2024.04.24 |
[Unity] 추상클래스와 파일 세분화 중요성 (2) | 2024.04.23 |