C# 열거형 고급 활용: 플래그와 연산
열거형의 기본 사용법을 넘어서, C#에서 제공하는 고급 기능들을 활용하여 코드의 유연성과 확장성을 높일 수 있습니다. 이번 글에서는 플래그 열거형, 연산, 문자열 변환, 그리고 확장 메서드에 대해 알아보겠습니다.
1. 플래그 열거형 (Flags): 비트 연산을 활용한 다중 값 할당
플래그 열거형은 각 멤버가 비트 위치를 기반으로 하는 값을 갖습니다. 이를 통해 여러 열거형 값을 조합하여 하나의 변수에 할당할 수 있습니다.
[Flags] // 이 속성은 열거형이 비트 필드나 비트 집합으로 사용될 수 있음을 나타냅니다.
enum Permissions {
None = 0, // 아무 권한이 없는 기본 상태
Read = 1, // 읽기 권한
Write = 2, // 쓰기 권한
Execute = 4 // 실행 권한
}
Permissions userPermissions = Permissions.Read | Permissions.Write; // 읽기와 쓰기 권한을 동시에 가진 상태
2. 열거형 값 간의 연산
열거형 값은 내부적으로 정수 값으로 관리되기 때문에, 간단한 산술 연산이 가능합니다.
Days today = Days.Wednesday; // 오늘은 수요일로 설정
Days tomorrow = today + 1; // 내일은 오늘보다 1증가된 요일, 즉 목요일로 설정
3. 문자열과 열거형 간의 변환
C#에서는 Enum 클래스의 메서드를 사용하여 열거형과 문자열 간의 변환을 쉽게 수행할 수 있습니다.
Days day = Days.Friday; // 'day' 변수를 'Friday'로 설정
string dayString = day.ToString(); // 열거형 'day'를 문자열로 변환
Days parsedDay = (Days)Enum.Parse(typeof(Days), dayString); // 문자열 'dayString'을 다시 열거형 'Days'로 변환
4. 열거형과 확장 메서드 활용
확장 메서드를 사용하여 열거형에 추가적인 메서드나 속성을 추가할 수 있습니다. 이를 통해 코드의 가독성과 유용성을 향상시킬 수 있습니다.
// 확장 메서드를 포함하는 'DaysExtensions' 정적 클래스
public static class DaysExtensions {
// 'Days' 열거형에 대한 확장 메서드. 주말 여부를 판단합니다.
public static bool IsWeekend(this Days day) {
return day == Days.Saturday || day == Days.Sunday;
}
}
// 'Days.Saturday'가 주말인지 확인하는 코드
bool isWeekend = Days.Saturday.IsWeekend();
결론
이렇게 C#의 열거형 고급 기능들은 코드의 확장성과 가독성을 크게 향상시켜줍니다. 적절히 활용하여 효율적인 프로그래밍을 해보세요.
참고자료
- Microsoft 공식 문서: 열거형 (C# 프로그래밍 가이드)
함께 보면 좋은 이전 게시글
- C# 열거형 소개: 정의와 기본 사용법
- C# 기본 연산자 사용하기: 산술, 관계, 논리 연산자
- C# 기본 연산자 사용하기: 비교, 삼항, Null 조건/병합 연산자
- C# 조건문 사용하기: switch문
- C# 배열 사용하기: 선언, 초기화, 접근 방법
이 글이 도움이 되셨다면 공유 부탁 드립니다.