이번 포스팅은 제가 잘 활용하지 못했던
Enum 열거형에 대해 작성하였습니다.
| Enum?
C#에서 Enum은 직접 정의한 상수 집합을 나타내는 데이터 형식입니다.
주로 상수 값을 그룹화하여 사용하며,
특정 값을 의미하는 이름을 만들어 사용합니다
글로 읽으면 이해가 안 되는데 바로 예시를 들어볼게요
public enum Season
{
Spring,
Summer,
Autumn = 14,
Winter
}
위 코드를 보시면 Season 이라는 Enum을 정의했습니다.
상수 값을 정의하지 않으면 기본으로 0부터 시작하는 숫자로 매핑되며
순차적으로 증가합니다.
Spring은 0, Summer은 2라는 값으로 정의됩니다.
하지만 Autumn 처럼 14로 명시적으로 정의를 한다면
Winter는 그다음 숫자인 15로 정의됩니다.
| Enum에서 Name을 가져오는 방법
Enum에서 특정 값에 대한 이름을 가져오고 싶을 때는
Enum.GetName() 메서드를 사용합니다.
위 정의했던 Season Enum형을 예시로 들자면
값 1에 대한 이름인 Summer를 가져오고 싶다면 GetName() 메서드를 사용하면 됩니다.
예시) Enum.GetName()을 사용한 Enum형의 Name 가져오기
Season summerValue = Season.Summer;
string name = Enum.GetName(typeof(Season), summerValue);
Console.WriteLine(name); // 출력 : Summer
public static string? GetName(Type type, Object obj)
메서드 매개변수를 보면 알 수 있듯이
GetName 메서드는 Enum 타입과 해당 값의 인덱스를 인자로 받아
String형으로 반환합니다.
또한 Enum.GetName() 메서드를 사용하여 Enum형에 정의된
모든 이름을 배열로 가져올 수 있습니다.
이는 오버로드 되어 있는 GetName(<TEnum>(TEnum))을 사용하여 처리합니다.
예시) Enum.GetName()을 사용하여 Enum형의 모든 Name 가져오기
string[] names = Enum.GetName(typeof(Season));
foreach(string name in names)
{
Console.WriteLine(name); // 출력 : Spring, Summer, Autumn, Winter
}
| Enum에서 Value를 가져오는 방법
Enum 값은 기본적으로 정수형이기 때문에 단순히 int 형변환을 통해 값을 가져올 수 있습니다.
int summerValue = (int)Season.Summer;
Console.WriteLine(summerValue); // 출력 : 1
만약 모든 Enum 값을 가져오고 싶다면
Enum.GetValue() 메서드를 사용하여 배열로 가져올 수 있습니다.
예제) Enum.GetValue() 메서드를 사용하여 Enum에 정의된 모든 값 가져오기
Season[] seasons = (Season[])Enum.GetValues(typeof(Season));
foreach (season d in seasons)
{
Console.WriteLine($"{season} = {(int)season}");
// 출력
// Spinrg = 0
// Summer = 1
// Autumn = 14
// Winter = 15
}
| 마무리
저는 Enum 열거형을 활용해서 프로젝트에서 상수 값을 효율적으로 처리했습니다.
예를 들어 처리해야 하는 데이터를 상수 값으로 정의하고
불러와서 처리하는 방법으로 코드를 간결하게 구현했습니다.
여러분도 Enum을 활용해서 가독성 높은 코드를 구현해 보세요!
틀린 점이나 질문이 있으시면 댓글로 남겨주세요!
감사합니다 :)
'C#' 카테고리의 다른 글
C# 정규 표현식(Regular Expression) 활용 (Match, Result) (0) | 2024.10.27 |
---|---|
C# 정규 표현식(Regular Expression) 이해 (0) | 2024.10.26 |
C# 배열을 메서드에 전달하면 안되는 이유 (1) | 2024.10.05 |
C# Modbus TCP 통신 뚫기 : NModbus 라이브러리 사용 (4) | 2024.10.03 |
C# 네트워크 통신을 위한 BitConverter 클래스 이해 (0) | 2024.03.18 |